我的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
属性。
答案 0 :(得分:1)
使用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