我有下表,我希望在删除相应的配方或成分时删除该行。
我应该通过级联删除创建两个外键还是通过触发器删除?我与Database First EF合作,如果这有任何区别......
CREATE TABLE [dbo].[RECIPE_STEP] (
[Amount] FLOAT NOT NULL,
[RecipeId] INT NOT NULL,
[Description] NVARCHAR(MAX) NULL,
[IngredientId] INT NOT NULL,
CONSTRAINT [PK_RECIPE_INGREDIENT_STEP_ID] PRIMARY KEY CLUSTERED ([RecipeId] ASC, [IngredientId] ASC)
)
非常感谢
答案 0 :(得分:1)
您可以使用ON DELETE CASCADE
。因为你可以避免使用触发器。您可以尝试在某些复杂情况下使用触发器。由于您要在删除特定食谱时删除该行,我建议ON DELETE CASCADE
足够了。
MSDN说:
ON DELETE CASCADE表示主表中的行是 删除,你想要在辅助表中的所有相关行,其中 有一个指向主表的FOREIGN KEY,是自动的 删除。在Orders和OrderDetails示例中,如果删除了 从订单表订购订单ID 10002,两个订单详细信息 在属于该订单的OrderDetails表中 自动删除。