MySQL的事务的创建:
①隐视事务:事务没有明显的开始和结束的标记.这时候像insert语句,update语句和delete语句,每一条SQL语句就默认是一个事务。
显然,隐视事务在类似转账的逻辑业务需求的时候,就无法处理了!
②显示事务:说白了,这个事务模式,就要我们中程序中手动的用命令来开启事务,和结束事务,并让事务里的多条SQL语句去执行.
注意:默认MySQL是开启自动提交事务的,用show variables like 'autocommit';命令可以查看到。 所以开启显示事务前,要关掉它,用set autocommit=0;只对本身回话有效。
①:开始事务
set autocommit=0;
start transaction; #可选的,执行set autocommit=0已经默认开启了!
②:编写事务中的SQL语句(主要是:select update delete insert等语句)
语句1;语句2;........
③:结束事务
commit;提交事务去真正执行
rollback;回滚事务,恢复数据库执行前的状态!
来演示一下:
DROP TABLE IF EXISTS account;
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
balance DOUBLE
);
INSERT INTO account(username,balance) VALUES('A',1000),('B',1000);
SET autocommit = 0;#开启事务
START TRANSACTION;
#编写sql语句
UPDATE account SET balance=balance-500 WHERE username='A';
UPDATE account SET balance=balance+500 WHERE username='B';
#结束事务
#commit;
ROLLBACK;