工作,我有兩個表: 表A的列id(UNIQUEIDENTIFIER)
和name(NVARCHAR)
(使用NEWSEQUENTIALID()
自動生成的「ID」列中的值)READUNCOMMITTED不能跨交易
表B的列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'隔離級別允許第二個事務中的插入讀取第一個中未提交的內容?
我在這裏丟失了什麼或我使用的方式/設置事務隔離級別不正確?
任何建議,將不勝感激。
這是非常有意義的!是否有無論如何我可以解決這個可能保持外鍵約束仍然存在? – user3638992
你究竟想要做什麼?爲什麼?這將幫助我理解你可能做什麼。 –
沒有辦法解決這個問題,因爲如果有辦法可能會違反參照完整性。您的設計出現瑕疵@ user3638992。交叉訪問相同的數據是非常危險和脆弱的。 – usr