我遇到了问题:
我有一张桌子"喜欢"其结构如下:
-- likeID
-- elementID
-- elementType
表格的其余部分并不重要。 让我解释一下表:likeID只是插入的ID的ID。 elementID是被喜欢的元素的ID。 elementID不是唯一的,因为元素可以具有不同的elementTypes,因此是元素typeType。
所以,让我们这样说:
我喜欢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
。当我删除elementType 0的元素1(它是thisElementID表的一部分)时,它也应删除它的类似内容。但问题是,elementType 1的元素1具有相同的ID值(otherElementID)。
如何管理此功能? 我希望你明白我的意思! :)
答案 0 :(得分:0)
为每个额外的表创建触发器:
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
替换为额外表格的名称。