事务把所有命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
事务是一个不可分割的工作逻辑单元
开启事务:START TRANSACION或BEGIN
提交事务:COMMIT
回滚事务:ROLLBACK
事务四大特征:
原子性A(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性C(Consistency):事务完成时,必须使所有数据保持一致状态
隔离性I(lsolation):多个事务间,操作的可见性
持久性D(Durability):事务一旦提交或回滚,它对数据库中数据的改变是永久的
DROP TABLE IF EXISTS account;
CREATE TABLE account(
id INT PRIMARY KEY auto_increment,
name VARCHAR(10),
money DOUBLE(10,2)
);
INSERT INTO account(name,money) VALUES ('jack',10000),('jane',5000);
SELECT id,name,money from account;
UPDATE account SET money = 10000;
BEGIN;
UPDATE account set money = money - 500 where name = 'jack';
-- 出错了
UPDATE account set money = money + 500 where name = 'jane';
SELECT id,name,money from account;
-- 回滚事务
ROLLBACK;
SELECT @@autocommit;-- 查询事务默认提交方式,1为默认自动提交
set @@atuocommit = 0; -- 设置事务为手动提交
SELECT id,name,money FROM count;
UPDATE account set money = money - 500 where name = 'jack';
COMMIT; -- 提交进行了这一步后,其他地方才能查询到你的修改
网友评论