事务
TCL
transacation control language 事务控制语言
事务:
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行
1.原子性:不可再分,要么全部执行,要么全部不执行
2.一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态
3.隔离性:一个事务执行不能被另一个干扰
4.持久性:一个事务一旦被提交,对数据库的改变是永久性的
案例:转账
张三丰 1000
郭嘉 1000
update 表 set 张三丰的余额 = 500 where name='张三丰'
update 表 set 郭嘉的余额 = 1500 where name='郭嘉'
事务的创建
#隐式事务:事务没有明显的开启结束的标记
比如insert、update、delete语句
delete from 表 where id = 1;
#显示事务:有明显的开启或结束的标记
前提:必须设置自动提交功能为禁用
步骤一、开启事务
set autocommit = 0 ;
start transaction;可选的
步骤二、编写事务中的sql语句(select insert update delete)
语句一;
语句二;
...
步骤三、结束事务
commit;提交事务
rollback;回滚事务
开启事务的语句;
update 表 set 张三丰的余额 = 500 where name='张三丰'
update 表 set 郭嘉的余额 = 1500 where name='郭嘉'
结束事务的语句;
#savepoint,回滚保存点
set autocommit = 0 ;
start transaction;
delete from account where id = 25 ;
savepoint a ;#设置保存点a
delete from account where id = 29 ;
rollback to a ;#回滚保存点,即29号没有删