我必须像Facebook一样管理分享帖这里是我打算如何做的。
我有一个包含带有parent_id字段的文章的表,我想在删除父项时将所有共享文章的状态更改为0(当父状态= 0时)
articles
+----+-----------+--------------+-------+--------+
| id | content | user_id | parent_id | state |
+----+-----------+--------------+-------+--------+
| 1 | content | 2 | null | 1 |
| 2 | content | 5 | null | 1 |
| 3 | content | 4 | 2 | 1 |
| 4 | content | 6 | null | 1 |
| 5 | content | 7 | 1 | 1 |
| 6 | content | 1 | 3 | 1 |
| ...| ... | ... | ... | ... |
+----------------+---------+------------+--------+
根据上面的文章表示例:
用户4分享第2条,用户1分享第3条,这是第2条的子女。因此,当第2条(根文章)被删除(他的状态变为0)时,所有儿童文章(3& 6)都表明必须也改为0。
如何做到这一点?
管理分享帖子的任何其他方式都将非常感谢
答案 0 :(得分:0)
我认为您可以在删除时编写触发器:
文档:https://dev.mysql.com/doc/refman/5.7/en/create-trigger.html
有一个例子:
在插入articles
之前
对于每一行
开始
UPDATE文章SET parent_id = 0 WHERE parent.id = OLD.parent_id;
END
如果您需要多个表上的触发器,您可以编写存储过程并在触发器上调用它,而不是在每个表上编写查询。
此外,如果您想避免丢失/取消链接的记录,如果您使用INNODB表,则可以使用外键。使用外键,您不能插入不存在的parent_id,或者如果有任何子项,则无法删除寄存器。
您可以在此处查看有关外键的文档:https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html