事务(Transaction)是需要在同一个处理单元中执行的一系列更新处理的集合。
--创建事务(Transaction)
/*
事务开始语句;
DML语句;
……
事务结束语句(COMMIT||ROLLBACK);
*/
/*事务的开始*/
--SQL SEVER、PostgreSQL
BEGIN TRANSACTION;
--MySQL
START TRANSACTION
--Oracle、DB2 无
COMMIT——提交处理(直线处理)
提交事务包含的全部更新处理的结束指令,一旦提交,就无法恢复到事务开始前的状态。在处理之前一定要确认是否真的需要进行更新。
虽然不清楚事务开始的时间点,但是在事务结束时一定仔细确认。
ROLLBACK——取消处理(回滚)
取消事务包含的全部更新处理的结束指令,一旦回滚,数据库就会恢复到事务开始之前的状态。
事务回滚不会造成大规模的数据损失。
ACID特性——事务的四种特性
- 原子性(Atomicity)
在事务结束时,其中所包含的所有操作要么全部成功,要么全部失败回滚。成功则正确应用到数据库,失败则对数据库无任何影响。
- 一致性(Consistency)
事务必须使数据库从一个一致性的状态转换到另一个一致性的状态。简单点说就是事务所包含的处理要满足数据库提前设置的约束。不合法的SQL就会回滚。
- 隔离性(Isolation)
保证不同事务之间互不干扰的特性。保证事务之间不会相互嵌套,即事务结束之前对其他事务是不可见的。多个并发的事务也是隔离的。
【读取未提交内容(Read Uncommitted)】:最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果。所有的并发事务问题都会发生。
【读取提交内容(Read Committed)】:只有在事务提交后,其更新结果才会被其他事务看见。可以解决脏读。
【可重复读(Repeated Read)】:在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。可以解决脏读、不可重复读。
【可串行化(Serialization)】:事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发事务的所有问题。
- 持久性(Durability)
一个事物一旦被提交了,对数据库中的数据的改变是永久的。
【说明】
#本文仅为个人学习笔记参考使用,如有侵犯您的权益请及时联系删除!
#如有错误和缺漏,欢迎大佬给予批评和指正!