我有一个问题:
我有一个表"likes",它的结构如下:
-- likeID
-- elementID
-- elementType
表的其余部分不重要。让我来解释一下这个表:likeID只是插入的类的ID。elementID是被喜欢的元素的ID。elementID不是唯一的,因为元素可以有不同的elementType,因此存在字段elementType。
我们这样写:
我喜欢elementType 0的元素1。现在它将是(likeID, elementID, elementType) VALUES (1,1,0)
作为mysql插入。现在我喜欢elementType 1的元素1。现在是(likeID, elementID, elementType) VALUES (1,1,1)
现在我有两个额外的表:elementType 0和elementType 1的表。它们的结构类似如下:
-- thisElementID
-- blabla other fields not important
和
-- otherElementID
-- blabla other fields not important
我现在需要的是一个ON DELETE CASCADE
。当我删除作为thiselementid表一部分的elementType 0的元素1时,它也应该为它删除类似的元素。但问题是,elementType 1的元素1具有相同的ID值(otherElementID)。
我怎样才能使它工作?我希望你明白我的意思!:)
为每个额外的表创建触发器:
delimiter //
CREATE TRIGGER extra0_del AFTER DELETE ON extra0
FOR EACH ROW
BEGIN
DELETE FROM likes WHERE elementID = OLD.thisElementID AND elementType = 0;
END;
//
CREATE TRIGGER extra1_del AFTER DELETE ON extra1
FOR EACH ROW
BEGIN
DELETE FROM likes WHERE elementID = OLD.otherElementID AND elementType = 1;
END;
//
delimiter ;
用额外表的名称替换extra0
和extra1
。