我要回答两个问题。以下是一个概述:
我有三张桌子:
CREATE TABLE A(x INT)
CREATE TABLE B(x INT)
CREATE TABLE C(x INT)和2个触发器:
ALTER TRIGGER ATr ON A
FOR INSERT AS
BEGIN
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
INSERT INTO B
SELECT *
FROM inserted;
COMMIT
END
ALTER TRIGGER BTr ON B
FOR INSERT AS
BEGIN
INSERT INTO C
SELECT * FROM inserted;
END而插入触发ATr触发器INSERT INTO A VALUES(3)是在可重复读取隔离级别上完成的,并提交了该数据库的默认隔离级别。
我需要回答两个问题:
我很难理解这些嵌套事务是如何工作的。级别SERIALIZABLE事务中的任何事务会执行吗?在这种情况下,它们甚至嵌套吗?如果较低的隔离级别在较高的隔离级别内或相反的情况下会发生什么?
发布于 2020-05-28 20:44:44
这种行为记录在这里,设置事务隔离级别。
并且您可以通过运行
select CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncomitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS transaction_isolation_level
from sys.dm_exec_requests
where session_id = @@spid 无论您对当前的主动隔离级别有什么好奇。
https://stackoverflow.com/questions/62073772
复制相似问题