狂妄特工苏七少,顺德人网,西园寺玲央
语法:set transaction isolation level serialize;
序列化会指定下列内容:
语句不能读取已由其他事务修改但尚未提交的数据。
任何其他事务都不能在当前事务完成之前修改由当前事务读取的数据。
在当前事务完成之前,其他事务不能使用当前事务中任何语句读取的键值插入新行。
范围锁处于与事务中执行的每个语句的搜索条件相匹配的键值范围之内。 这样可以阻止其他事务更新或插入任何行,从而限定当前事务所执行的任何语句。 这意味着如果再次执行事务中的任何语句,则这些语句便会读取同一组行。 在事务完成之前将一直保持范围锁。 这是限制最多的隔离级别,因为它锁定了键的整个范围,并在事务完成之前一直保持范围锁。 因为并发级别较低,所以应只在必要时才使用该选项。 该选项的作用与在事务内所有 select 语句中的所有表上设置 holdlock 相同。
修改会话脚本:
--声明数据库使用
use testss;
go
--开启修改会话
begin transaction updatetran
update test1 set name='数据库快照' where id='1';
waitfor delay '00:00:10';
commit transaction
go
读取会话脚本:
--声明数据库使用
use testss;
go
--创建读取会话
begin transaction readtran
select * from test1 where id='1';
commit transaction;
go
读取会话脚本:
--声明数据库使用
use testss;
go
--设置事务隔离级别
set transaction isolation level serializable;
--创建读取会话
begin transaction readtran
select * from test1 where id='1';
commit transaction;
go
修改会话执行:依次显示修改会话执行状态和执行结果。
读取会话执行:依次显示读取会话执行状态和执行结果。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
数据库SQL---数据库、基本表、视图、索引的定义、修改、删除
在 Azure CentOS VM 中配置 SQL Server 2019 AG - (上)
在 Azure CentOS VM 中配置 SQL Server 2019 AG - (下)
网友评论