我必须像在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,文章3是文章2的子文章。因此,当文章2(根文章)被删除(其状态更改为0)时,所有子文章(3和6)的状态也必须更改为0。
如何做到这一点呢?
任何其他方式来管理共享帖子将非常感谢
发布于 2017-05-26 00:59:29
我认为你可以在delete上编程一个触发器:
文档:https://dev.mysql.com/doc/refman/5.7/en/create-trigger.html
下面是一个例子:
在INSERT ON articles之前为每一行开始更新项目SET parent_id =0 WHERE parent.id = OLD.parent_id;END
如果需要在多个表上使用触发器,可以编写存储过程并在触发器上调用它,而不是在每个表上编写查询。
此外,如果您希望避免丢失/取消链接的记录,则可以在使用INNODB表的情况下使用外键。使用外键时,您不能插入不存在的parent_id,也不能删除有childs的寄存器。
您可以在以下位置查看有关外键的文档:https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
https://stackoverflow.com/questions/44185631
复制相似问题