我正在使用asp.net和sql server。我有2個表:分類和產品。在產品表中,我將categoryId設置爲FK。我想要做的是:當我從類別表中刪除類別時,我希望該類別中的所有產品都將在產品表中刪除。這怎麼能做到(我更喜歡存儲過程,但它不是Mandetory)?同時從2個表中刪除?
2
A
回答
2
您可以定義FK使用DELETES CASCADE。否則,您需要首先刪除該類別中的所有產品,然後刪除該類別。
1
@CategoryID正進入存儲過程
delete from products where categoryid = @categoryid
delete from categories where categoryid = @categoryid
1
有很多方法可以做到這一點。我將在SQL中的外鍵約束上將刪除設置爲「級聯」。讓SQL爲你管理,這是它擅長的。
2
如果您可以調整架構,SQL Server支持cascading deletes。有了這樣的FK約束,你可以通過對該類別的單個刪除來獲得這種效果。不是每個人都喜歡級聯刪除,請介意你!
0
您可以通過在數據庫的'圖表'部分(假設MS SQL 2005/2008)或屏幕頂部的關係按鈕(SQL 2000)中創建表格之間的關係來完成此操作。
一旦一個一對多的關係已經與級聯創建刪除查詢可以簡單爲:
delete from Categories where CategoryId = XX
這將自動刪除與該類別相關聯的所有產品。
1
,如果你想用存儲過程
delete from Categories where [email protected]
delete from Products where categoryId = @categoryId
如果,如果你刪除分類表中的東西應該從產品刪除此想總是發生.IE做到這一點。我的選擇是DELETE CASCADE.something這樣
ALTER TABLE dbo.Products
WITH CHECK ADD CONSTRAINT FK_Products_Categories FOREIGN KEY([categoryId])
REFERENCES dbo.Categories([categoryId])
ON DELETE CASCADE
所以當你從分類表中刪除,它會自動從產品表還
e.g刪除:delete from dbo.Categories where categoryId [email protected]
no use of writing
delete from Products where categoryId = @categoryId
相關問題
- 1. 當!= 2時從列表中刪除
- 2. 從2個表中刪除記錄
- 3. MySQL從2個表中刪除記錄
- 4. 當2個不同工作表中的2個單元格相同時,刪除工作表中的一行
- 5. 如何同時從列表中刪除多個索引?
- 6. 同時從多個表中刪除記錄?
- 7. 如何從兩個表中同時刪除?
- 8. 同時刪除多個列表範圍?
- 9. 從兩個表中刪除
- 10. 從多個表中刪除
- 11. 從兩個表中刪除
- 12. 使用1個查詢從2個表中刪除數據
- 13. 從2個數據庫中選擇刪除同一列
- 14. 從2個mysqli查詢中刪除相同的值
- 15. 刪除不同數據庫中2個表的重複行
- 16. 刪除MySQL表中2個字段相同的重複項
- 17. 從另一個表中刪除特定行時刪除表中的行
- 18. 從列表中刪除選中的選中項 - Angular 2 +/Ionic 2
- 19. 從Java中的2個表中刪除行
- 20. 如何從列表中刪除,同時修改列表
- 21. 刪除時,從表中基於2場條件
- 22. Java:同時從不同ArrayList中刪除兩個對象
- 23. 同時刪除多個CKRecords
- 24. 從ArrayList中刪除 - 從列表中刪除一個整數
- 25. 如何使用相同的查詢從2個表中刪除數據?
- 26. 程序從不同的表中刪除
- 27. 從文件中刪除圖像,同時刪除mysql行
- 28. 從表中刪除與同一個表的外鍵約束
- 29. 從HTML表中刪除2個垂直邊框 - 如何?
- 30. 使用SilverLight從2個SQL表中刪除Linq-to-SQL
如果你得到了答案。請選擇一個正確的答案。 – anishMarokey
我不知道如何在這裏新建 – tone
已提供的答案旁邊有一個灰色勾勒的勾號。然後,選擇與您最能回答您的問題的答案相對應的答案。 – w4ymo