作者:猪猪爱tai旸 | 来源:互联网 | 2023-10-12 18:37
*什么是事物,事物就是要么同时成功,要么同时失败例如:张三给了李四一百块钱,张三账户的钱会少一百,李四的钱会多一百其实可以看成两条sql语句,一句是张三账户减一百,另一句是李四账户
/*
什么是事物,事物就是要么同时成功,要么同时失败
例如:张三给了李四一百块钱,张三账户的钱会少一百,李四的钱会多一百
其实可以看成两条sql语句,一句是张三账户减一百 ,另一句是李四账户加一百
说不定有时候,第一句执行成功了,第二句没成功,然后就会出现金额不匹配的问题。
所以有了事物;
事物的四大特征:ACID //首字母
1:(A)原子性:原子(最小单位,不可分割的原子单位),要么成功,要么失败
2:(C)一致性:事物执行后,数据库状态和其他业务规则保持一致,
例如:张三和李四的账户,无论转账成功与否,两个账户中的总金额应该是不变的
3:(I)隔离性:是指并发操作中,不同事物之间应该隔离开来,使每个并发中的事物不会相互干扰
px;说的我自己也不是很能看懂,我也不怎么明白这句话的意思
4:(D)持久性:一旦提交事物,它对系统的影响是持久性的
例如:一旦提交,会从内存中写到数据库中,可以随时查到
*/
/*
步骤:1:关闭mysql的自动提交
2:开始事物语句
3:mysql语句
4:结束事物语句
*/
-- 首先需要关闭 自动提交
SHOW VARIABLES LIKE 'auto%'
SET autocommit=off;
-- transaction的意思是事物
-- 合起来是开始一个事物
START TRANSACTION;
-- 中间写sql语句(我写的是转账,一个人减钱3,一个人加钱)
UPDATE table3
SET mOney=money-100
WHERE NAME='starry';
-- 可以加回滚点,也可以不加
-- savepoint的意思是保存点的意思。
-- 加上之后可以在程序执行中有问题的时候,数据在这个位置以前的都会执行
SAVEPOINT a;
UPDATE table3
SET mOney=money+100
WHERE NAME='alex';
-- 提交事务(成功)
COMMIT;
-- 提交事物(失败)(我这里写的是失败后返回a保存点,也可以不写a)
ROLLBACK TO a;
starry.