事务生命周期图:
声明事务的边界:
•事务的开始边界。
•事务的正常结束边界(COMMIT):提交事务,永久保存被事务更新后的数据库状态。
•事务的异常结束边界(ROLLBACK):撤销事务,使数据库退回到执行事务前的初始状态。
在mysql.exe中声明事务:
•每启动一个mysql.exe程序,就会得到一个单独的数据库连接。每个数据库连接都有个全局变量@@autocommit,表示当前的事务模式,它有两个可选值:
–0:表示手工提交模式。
–1:默认值,表示自动提交模式。
•如果要察看当前的事务模式,可使用如下SQL命令:
–mysql> select @@autocommit
•如果要把当前的事务模式改为手工提交模式,可使用如下SQL命令:
–mysql> set autocommit=0;
——在自动提交模式下提交事务:
•在自动提交模式下,每个SQL语句都是一个独立的事务。如果在一个mysql.exe程序中执行SQL语句:
–mysql>insert into ACCOUNTS values(1,'Tom',1000);
•MySQL会自动提交这个事务,这意味着向ACCOUNTS表中新插入的记录会永久保存在数据库中。此时在另一个mysql.exe程序中执行SQL语句:
–mysql>select * from ACCOUNTS;
•这条select语句会查询到ID为1的ACCOUNTS记录。这表明在第一个mysql.exe程序中插入的ACCOUNTS记录被永久保存,这体现了事务的ACID特性中的持久性。
——在手工模式下提交事务:
•在手工提交模式下,必须显式指定事务开始边界和结束边界:
–事务的开始边界:begin
–提交事务:commit
–撤销事务:rollback
例:
–mysql>begin;
–mysql>select * from ACCOUNTS;
–mysql>commit;