刪除我有兩個表:SQL觸發器從另一個表
產品:
Product ID | Quantity
OrdersLines:
Product ID | Amount --(multiple lines with the same ID)
當然,之前我刪除了該產品Products
表,我需要從01中刪除具有該產品ID的所有訂單行表。
所以我寫了一個觸發器來做到這一點:
CREATE TRIGGER [dbo].[atbl_Sales_Products_DTrig]
ON [dbo].[atbl_Sales_Products]
FOR DELETE
AS
BEGIN
DELETE FROM atbl_sales_OrdersLines
WHERE ProductID = (SELECT ProductID FROM deleted)
END
然而,當我嘗試做刪除從Products表的形式,還在說:
有在相關行表(銷售訂單行)必須刪除此行之前可以刪除
我在做什麼錯在這裏?
EDIT按請求:主要約束:
[dbo].[atbl_Sales_OrdersLines] WITH CHECK ADD CONSTRAINT
[FK_atbl_Sales_OrdersLines_atbl_Sales_Products] FOREIGN KEY([ProductID])
REFERENCES [dbo].[atbl_Sales_Products] ([ProductID])
是否有你不想使用[級聯刪除](https://stackoverflow.com/a/6260736/300836)的原因? –
是的,我知道這會解決問題。然而,即時通訊做這個分配。它需要在觸發器中解決。 – Benua
觸發器(稱爲'AFTER'觸發器)在表中的刪除操作之後執行,因此是錯誤消息。你需要的是一個'INSTEAD OF'觸發器,它們有點棘手。閱讀整篇文章:https://docs.microsoft.com/en-us/sql/relational-databases/triggers/dml-triggers – Alex