在进行sql语句执行时候,有些行为需要进行牵涉到多个表数据的操作,如果在执行的时候仅仅执行到了一条操作语句而没有执行完整,就需要进行全部撤销
update t_accounts set money = money-100 where id = 1;
update t_accounts set money = money+100 where id = 2;
例如上面两句(进行转账),都必须全部执行才能属于可以通过的行为,这种把多条语句作为一个整体进行操作的功能,被称为数据库事务
将多条事务当作同一事务进行统一执行,就需要使用 Begin(开始一个事务)
开启一个新的事务,然后接事务中需要进行操作的代码,以显式事务的方式进行
Begin;
update t_accounts set money = money-100 where id = 1;
update t_accounts set money = money+100 where id = 2;
当结束对于显式事务的操作后,在最后加上commit进行提交
BEGIN;
UPDATE accounts SET money = money - 100 WHERE id = 1;
UPDATE accounts SET money = money + 100 WHERE id = 2;
COMMIT;
在整个事务语句中,如果commit语句执行失败,那么整个事务将会直接失效
隔离级别:
脏读(Dirty Read) | 不可重复读(No Repeatable Read) | 幻读(Phantom Read) | |
---|---|---|---|
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |
信息加载中,请等待
微信客服(速回)
微信客服(慢回)