多个字段级联mysql

时间:2014-08-18 19:44:14

标签: php mysql sql cascade

我遇到了问题:

我有一张桌子"喜欢"其结构如下:

 -- 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)。

如何管理此功能? 我希望你明白我的意思! :)

1 个答案:

答案 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 ;

extra0extra1替换为额外表格的名称。