跨联结表删除级联

时间:2013-07-29 11:33:14

标签: sql sql-server tsql

我目前有3个表定义为

Product = ProductID, ProductTitle, ProductStatus
Category = CategoryID, CategoryTitle
ProductInCategory = ProductID, CategoryID

ProductInCategory.ProductID的FK为Product.ProductID,而ProductInCategory.CategoryID的FK为Category.CategoryID

目前,如果删除了产品或类别,则删除级联删除关系,我将如何进行此级联然后移动到联结表?即如果我删除了一个类别,请通过联结表删除与该类别相关联的所有产品,不用自己手动删除每个产品。

1 个答案:

答案 0 :(得分:0)

也许ProductInCategory表上的触发器可以工作:

DROP TRIGGER remove_products
GO
CREATE TRIGGER remove_products
ON ProductInCategory
FOR DELETE
AS 
DELETE FROM Product WHERE ProductID IN (SELECT ProductID FROM deleted);
GO

由于删除已经从Category级联到ProductInCategory,因此该触发器也应该删除相关产品。我假设您不想在从Product表中删除时删除类别。