是否有簡單的方法在SQL Server中刪除一組相互關聯的表格?理想情況下,我想避免擔心他們被拒絕的順序,因爲我知道在整個流程結束之前整個團隊都將離開。在SQL Server中刪除一組表格
回答
冒着聽起來很愚蠢的風險,我不相信SQL Server支持刪除/級聯語法。我認爲你可以配置一個刪除規則來執行級聯刪除(http://msdn.microsoft.com/en-us/library/ms152507.aspx),但據我所知,SQL Server的訣竅就是對每個要刪除的表執行一次drop drop查詢,然後檢查它是否正常工作。
我沒有訪問SQL Server,以測試這一點,但如何:
DROP TABLE IF EXISTS table1, table2, table3 CASCADE;
我不知道,如果德里克的方法效果。您尚未將其標記爲最佳答案。
如果不是這樣:我猜,SQL Server 2005應該是可能的。
他們在那裏引入了異常(我還沒有用過)。因此,放下表格,捕捉異常,如果發生,並嘗試下一個表格,直到它們全部消失。
如果需要,可以將表的列表存儲在臨時表中,並使用光標對其進行遍歷。
我最終使用Apache的ddlutils來執行刪除操作,在我的情況下對它進行了整理,儘管只能在sql server中工作的解決方案會比較簡單一些。
@Derek Park,我不知道你可以用逗號隔開表格,所以這很方便,但它看起來並不像預期的那樣工作。下界如果EXISTS和CASCADE都被sql server識別出來,並且運行drop table X, Y, Z
似乎只在它們應該按照所述順序被丟棄時才起作用。
另請參閱http://msdn.microsoft.com/en-us/library/ms173790.aspx,其中描述了drop table語法。
阻止您以任何順序刪除表的東西都是表之間的外鍵依賴關係。所以在你開始之前擺脫FK的。
- 使用INFORMATION_SCHEMA系統視圖,檢索與這些表的所有外鍵的列表
- 每一個外鍵
- 現在,你應該能夠刪除所有的表,使用的降任何你想要的訂單。
一種不同的方法可能是:首先擺脫約束條件,然後將這些表格放在一個鏡頭中。
換句話說,每個約束的DROP CONSTRAINT,然後是每個表的DROP TABLE;此時執行順序不應該成爲問題。
這需要sp___drop___constraints腳本,你可以找到Database Journal:
sp_MSforeachtable @command1="print 'disabling constraints: ?'", @command2="sp_drop_constraints @tablename=?"
GO
sp_MSforeachtable @command1="print 'dropping: ?'", @command2="DROP TABLE ?"
GO
注意這一點 - 很明顯 - 如果你的意思是放棄所有的表在數據庫中,所以要小心
- 1. SQL Server刪除表
- 2. 從SQL Server表中刪除一行
- 3. 刪除/刪除SQL Server中的類似表格
- 4. 在SQL Server中刪除連接表
- 5. 刪除在SQL Server
- 6. 刪除在SQL Server
- 7. 使用try-catch模塊在Sql-Server中刪除表格
- 8. 在Microsoft SQL Server 2012中恢復已刪除的表格2012
- 9. 在SQL Server表中的數據刪除空格
- 10. 通過Sql Server管理工作室在Sql Server中刪除表
- 11. 刪除SQL Server觸發器 - 哪些記錄在刪除表中?
- 12. 從Sql Server中的表中刪除行
- 13. 刪除表中的幾項SQL Server
- 14. 在刪除SQL後在EDMX中未刪除的表格
- 15. SQL Server中表之間的約束,刪除一個應該刪除另一個
- 16. SQL Server:基於另一個表的值從表中刪除
- 17. 刪除從SQL Server
- 18. 刪除SQL Server 2005
- 19. 在SQL SERVER中從CTE中刪除行
- 20. SQL Server,具有刪除與刪除臨時表與變量表
- 21. 在存儲過程中刪除SQL Server
- 22. 在SQL Server 2008中自動刪除行
- 23. 在SQL Server中停止刪除操作
- 24. 在SQL Server中如何刪除重複
- 25. 在SQL Server 2010中刪除「重複」行
- 26. 在sql server中刪除大量數據
- 27. 如何在SQL Server中刪除外鍵?
- 28. 如何在SQL Server中刪除多行
- 29. 在SQL Server 2008中刪除重複行
- 30. 在Sql Server中刪除Stored Proc Deadlock