SQL基础——事务概述

事务(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)

一个事物一旦被提交了,对数据库中的数据的改变是永久的。

 

【说明】

#本文仅为个人学习笔记参考使用,如有侵犯您的权益请及时联系删除!

#如有错误和缺漏,欢迎大佬给予批评和指正!

你可能感兴趣的:(sql,sql)