首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql查找共享帖子的根父级

Mysql查找共享帖子的根父级
EN

Stack Overflow用户
提问于 2017-05-26 00:38:52
回答 1查看 44关注 0票数 0

我必须像在Facebook上一样管理分享帖子,这里是我打算这样做的方式。

我有一个表,其中包含带有parent_id字段的文章,并且我想在删除父项时将所有共享文章的状态更改为0(当父项状态=0时)

代码语言:javascript
复制
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。

如何做到这一点呢?

任何其他方式来管理共享帖子将非常感谢

EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44185631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档