【发布时间】:2016-06-23 02:38:37
【问题描述】:
我有两张桌子:
包含id(UNIQUEIDENTIFIER) 和name(NVARCHAR) 列的表A(使用NEWSEQUENTIALID() 自动生成'id' 列的值)
TableB 包含 id( IDENTITY)、parentId(UNIQUEIDENTIFIER) 列。
TableB 中的parentId 对TableA id 有一个外键约束。
我正在尝试执行以下查询:
在会话 1 中:
BEGIN TRAN test1
INSERT INTO dbo.TableA( name )
OUTPUT INSERTED.id
VALUES ('foo')
请注意,我还不想在这里提交事务。
在会话 2 中:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRANSACTION test2
INSERT INTO dbo.TableB(parentId)
VALUES('<use_id_from_session1_here>')
第二次插入失败并在 SQL Server Management Studio 和我的应用程序代码中挂起。 不应该将隔离级别设置为“ReadUncommitted”以允许第二个事务中的插入读取第一个事务中未提交的内容吗?
我在这里遗漏了什么还是我使用/设置事务隔离级别的方式不正确?
任何建议将不胜感激。
【问题讨论】:
标签: sql sql-server transactions