事务操作

  1. 保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

ACID属性

原子性(Atomicity

  1. 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

    一致性(Consistency)

  2. 事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

    隔离性(Isolation)

  3. 事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    持久性(Durability)

  4. 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响

    开启事务

    说明

  5. MySQL默认是自动提交事务,一句SQL是一个事务,执行成功一句就提交一句

    方式①

  6. 手动开始事务,取消自动提交,接下来所有的SQL执行都必须手动提交了,否则就不生效。

    1. set autocommit = false;
    2. .... 都是需要手动提交的
    3. set autocommit = true;

    方式②

  7. 当只是部分的SQL需要构成事务,手动提交,而其他SQL还是想要自动提交的. ```sql start transaction; …. 一个事务 commit;或rollback;

start transaction; …. 另一个事务 commit;或rollback;

… 自动提交


2. 如果开启事务后,操作有误需要回退就是用rollback
```sql
start transaction;
delete from stu where id=3;
delete from stu where id=4;
delete from stu where id=5;

# 删错了 需要回滚
rollback;