数据库之SQL(Transact-SQL-事务,回滚,锁)

一、什么是事务?

(1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。

(2):事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。

COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。

ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。

(3):事务运行的三种模式:

A:自动提交事务

每条单独的语句都是一个事务。每个语句后都隐含一个COMMIT。

B:显式事务

以BEGIN TRANSACTION显式开始,以COMMIT或ROLLBACK显式结束。

C:隐性事务

在前一个事务完成时,新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK显式结束。

(4):事务的特性(ACID特性)

A:原子性(Atomicity)

事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。

B:一致性(Consistency)

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

C:隔离性(Isolation)

一个事务的执行不能被其他事务干扰。

D:持续性/永久性(Durability)

一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

 

用个例子来说明

如果我们要修改表中的某条记录,可以用以下方法:

首先删除原记录,然后插入修改后的新记录

这个过程中有2步

如果出现记录删除成功,但插入的时候因为某种原因导致失败的话,就会出现数据丢失。

这个时候,就可以用事物来处理

把删除和插入当成是一件事,必须是2步都成功,数据才发生改变。

否则若是出现删除成功,而插入失败的情况,希望将自动回滚,恢复为原始状态。

 

二、为什么要有事务?

很多用户对多个数据进行修改,由于时间问题导致互相修改、出错,而在操作前为每个人创建一个事务,待事务完成之后再执行,便不会影响到其他人编辑数据。

数据库之SQL(Transact-SQL-事务,回滚,锁)

 

三、什么是回滚?

举例:表A 表B temp表

数据库的流程是

当表A要插入数据到表B时,会先插入到临时表Temp表,一旦插入成功,Temp表会自动删除,

一旦插入失败,数据会重新回到temp表,temp表保留错误数据,当你在插入一条数据时还是会进入错误的temp表中,所以此时要用回滚操作,回滚实质上就是将错误的数据返回temp表,然后删除temp表,在解释的通俗一点就是相当于没有执行过这条错误的数据插入的语句执行。

四、如何调整回滚模式?

数据库之SQL(Transact-SQL-事务,回滚,锁)

五、事务如何嵌套?

数据库之SQL(Transact-SQL-事务,回滚,锁)

六、什么是锁?

 

数据库之SQL(Transact-SQL-事务,回滚,锁)

七、锁的类型?

 

数据库之SQL(Transact-SQL-事务,回滚,锁)

七、什么是死锁?

数据库之SQL(Transact-SQL-事务,回滚,锁)

八、思维导图(数据库视频第八章全部内容)

数据库之SQL(Transact-SQL-事务,回滚,锁)

 

到此已完成数据库视频的第八章梳理,这章的内容的确有些多,实践的部分也多,不过还是很有收获的,下一站走起^_^