SQL Composite PK由"外键"组成。级联删除还是触发?

时间:2015-10-01 07:54:49

标签: sql sql-server entity-framework

我有下表,我希望在删除相应的配方或成分时删除该行。

我应该通过级联删除创建两个外键还是通过触发器删除?我与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)
)

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用ON DELETE CASCADE。因为你可以避免使用触发器。您可以尝试在某些复杂情况下使用触发器。由于您要在删除特定食谱时删除该行,我建议ON DELETE CASCADE足够了。

MSDN说:

  

ON DELETE CASCADE表示主表中的行是   删除,你想要在辅助表中的所有相关行,其中   有一个指向主表的FOREIGN KEY,是自动的   删除。在Orders和OrderDetails示例中,如果删除了   从订单表订购订单ID 10002,两个订单详细信息   在属于该订单的OrderDetails表中   自动删除。