0
我在SQL Server 2012數據庫中有一個存儲過程。我從PARENT表中刪除,然後刪除CHILD錶行。 CHILD表有一個外鍵,指向父表中的主鍵。在存儲過程中刪除外鍵的順序是否重要BEGIN END塊
如果它全部在BEGIN END塊內,我刪除的順序是否重要?我必須刪除PARENT行之前的CHILD行嗎?
我在SQL Server 2012數據庫中有一個存儲過程。我從PARENT表中刪除,然後刪除CHILD錶行。 CHILD表有一個外鍵,指向父表中的主鍵。在存儲過程中刪除外鍵的順序是否重要BEGIN END塊
如果它全部在BEGIN END塊內,我刪除的順序是否重要?我必須刪除PARENT行之前的CHILD行嗎?
儘管一些數據庫系統支持可延遲的約束,但在SQL Server中,每個單獨語句的末尾必須滿足所有約束條件。因此,除非外鍵具有允許繼續刪除的ON DELETE
規範,否則您將無法刪除父行,直到沒有子行引用它們。
但是應該注意的是,BEGIN
...END
在這裏沒有任何影響。它們只是將幾個陳述組合在一起的一種手段。即使在支持可延遲約束的數據庫系統中,延期交易也按交易處理。交易以BEGIN TRANSACTION
和COMMIT [TRANSACTION]
(或ROLLBACK
)開始並完成,而不是BEGIN
... END
。