級聯刪除不在此特定的數據庫上進行設置。只是想知道是否有一種方法可以在一次滑動中執行,比運行兩個單獨的語句更有效。是否可以在一條SQL語句中刪除主節點和詳細記錄?
0
A
回答
4
號
你可以做一個命令兩個語句:
DELETE FROM ChildTable; DELETE FROM ParentTable;
但是這是兩個語句的效果。
或
您可以在刪除父記錄的ChildTable上放置觸發器。
既不符合您的標準。
1
應該是在一個交易 - 這可能是效率較低,但很多數據的完整性更好
BEGIN TRAN
DELETE FROM ChildTable WHERE safetycatch=0
DELETE FROM ParentTable WHERE safetycatch=0
COMMIT TRAN
編輯 - 如果你真的想使用只有一個語句,那麼你可以如創建一個存儲過程
CREATE PROCEDURE DeleteBoth AS
BEGIN TRAN
DELETE FROM ChildTable WHERE safetycatch=0
DELETE FROM ParentTable WHERE safetycatch=0
--ERROR HANDLING IF STUFF GOES WRONG THEN ROLLBACK TRAN
COMMIT TRAN
GO
那麼您可以在一個線路從此與
EXEC DeleteBoth
隨着高速緩存的執行計劃,我想比起級聯刪除的性能差異可以忽略不計運行它那是相當多什麼反正在幕後。
0
日產番提到,觸發器會做到這一點。正如wefwfwefwe所建議的那樣,如果事務必須全部或全無,請使用事務。
取決於你是多麼絕望,你可以在一個過於複雜的方式與向數據庫發出一個語句做結合兩種:
- 建立在連接表的視圖。
- 添加INSTEAD OF觸發器就可以了,編碼從兩個表刪除相應的行。沒有真正推薦,但你可以做到。
1
是的,但僅限於定義外鍵關係並使用ON DELETE CASCADE選項。
一切將需要兩個語句,即使陳述碰巧在同一個事務。
0
通常沒有設置級聯刪除(通常與阻塞和鎖定有關)是一個很好的理由。由於它們沒有設置,所以你需要自己爲所有子表和父表編寫單獨的刪除語句。我建議最好的方法是在存儲過程中使用事務,因爲如果您關心數據的完整性,您不想執行部分刪除操作。確保有錯誤陷印和回滾。
相關問題
- 1. 我可以變平頭和詳細記錄在SQL Server中的SQL語句2012
- 2. 如何使用一個sql刪除主詳細記錄?
- 3. 是否可以通過使用「刪除」語句來合併兩條記錄?
- 4. 如何在SQL Server 2008中刪除所有詳細記錄時自動刪除主記錄?
- 5. 在主細節窗口視圖中添加詳細記錄
- 6. 用if語句刪除sql記錄
- 7. 刪除SQL中第一條記錄以外的重複記錄
- 8. 刪除既可以是DDL語句又可以是DML語句
- 9. 是否可以從同一個SQL語句中的多個表中刪除?
- 10. 主要細節:如何添加詳細記錄?
- 11. 是否可以刪除鏈表中的最後一個節點?
- 12. 使用Linq-2-Sql編輯主記錄詳細記錄
- 13. 這條SQL語句是否可以在JPQL +準則中使用?
- 14. 是否可以使用「WHERE」子句選擇SQL語句中的所有記錄?
- 15. 是否可以在MYSQL中記錄錯誤語句?
- 16. 德爾福10-如何刪除主人時自動刪除詳細記錄?
- 17. 能否詳細向我解釋一下這個PL/SQL語句?
- 18. 優化主詳細插入語句
- 19. 在Nhibernate日誌記錄中刪除別名的詳細信息
- 20. 在一條語句中刪除多行
- 21. 刪除表中不在刪除語句中的記錄?
- 22. 在Asp.net和sql中刪除語句
- 23. 根據下一條記錄刪除SQL中的記錄
- 24. 使用HQL語句刪除ID列表中的多條記錄
- 25. EF7讀取主詳細記錄
- 26. Ember.js RC1路由與主詳細記錄
- 27. 在一條語句而不是兩條SQL語句中更新
- 28. SQL:是否可以將INSERT和SELECT語句合併爲一個
- 29. SQL「在」語句,返回6條......整個SQL語句返回22條記錄
- 30. 是否可以在MySQL更新語句中標記重複記錄?
這些示例應該謹慎使用。從ChildTable中刪除並從ParentTable中刪除將刪除這些表上的所有條目。請記住在查詢中引用WHERE語句以避免此問題。 – Chris 2009-09-02 16:44:28
永遠不要寫一個具有commit tran的proc,而沒有辦法來捕獲錯誤並在有回退的情況下回滾。克里斯是對的,把刪除的例子放在沒有條款的地方是非常危險的。 – HLGEM 2009-09-02 19:07:31
我會希望這是顯而易見的...添加了條款和錯誤處理僞代碼。現在停止低調我! – wefwfwefwe 2009-09-03 07:17:23