1

我的 MSSQL DB 设计如下:

一张带有图片的表格,image_id = PK 一张带有视频的表格,video_id = PK 一张带有评论的表格,comment_id = PK,以及与父项唯一匹配的两个字段:item_id(等于 image_id 或 video_id)和 item_type,它告诉我谁是父级(图像或视频)。

如何添加级联删除,以便在删除图像时自动删除匹配的评论Images.image_id = Comments.item_id AND Comments.item_type = 'image'?如您所见,为此,我必须同时指定项目类型,item_id因为另一个注释可以存在于相同item_id但具有不同item_type属性的位置。

4

1 回答 1

1

使用 a TRIGGER,这允许您包含必要的c.item_type = 'image'过滤器:

CREATE TRIGGER [dbo].[TrgImagesDelete] ON [dbo].[Images] FOR DELETE
AS
BEGIN
    DELETE c
    FROM
        Comments c
        JOIN Deleted d
            ON c.item_id = d.image_id
            AND c.item_type = 'image'
END
GO   
于 2012-12-10T17:21:35.100 回答