事务

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号没有删

posted @ 2022-12-17 16:04  平凡的柳先生  阅读(79)  评论(0)    收藏  举报