1

私の MSSQL DB 設計は次のとおりです。

画像を含む 1 つのテーブル、image_id = PK ビデオを含む 1 つのテーブル、video_id = PK コメントを含む 1 つのテーブル、comment_id = PK、および親と一意に一致する 2 つのフィールド:親 (画像またはビデオのいずれか)。

カスケード削除を追加して、画像を削除すると、一致するコメントが自動的に削除されるようにするにはどうすればよいImages.image_id = Comments.item_id AND Comments.item_type = 'image'ですか? ご覧のとおり、これを機能させるには、アイテム タイプとitem_id、別のコメントが同じ属性に存在する可能性があるため、item_id両方item_typeを指定する必要があります。

4

1 に答える 1

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   
于 2012-12-10T17:21:35.100 に答える