繁体   English   中英

MySQL:使用外键,触发器或其他功能自动更新另一个表中的列?

[英]MySQL : automatically update a column in another table with foreign key, trigger or what?

我想在MySQL许多表之间进行一些自动更新,但是我想知道如何做到这一点。 这是一个例子:

Table `articles` : ID, TEXT, DATE, DELETED

Table `comments` : ID, TEXT, DATE, DELETED

Table `users` : ID, NAME, AGE, DELETED

Table `link` : ID, ARTICLE_ID, COMMENT_ID, USER_ID, DELETED

如您所料, link表包含其他ID。 我已经这样设计了数据库,以使表的列数尽可能少。

我知道这里有很多问题,但是我真的不知道什么是最佳解决方案。 所以这是我想做的:

删除注释后(更新comments集DELETED = 1,其中ID = ...),我想更新列link .DELETED(=> 1)。

当删除用户时(更新users将DELETED = 1设置为ID = ...),我想更新列link .DELETED(=> 1)和articles .TEXT(=> NULL)。

我知道我可以在link .ARTICLE_ID和article .ID之间使用外键,并且只需删除行即可。 但是,我对我的网站所使用的用户拥有有限的权利。 我将用一个功能更强大的用户来批处理一个批处理,以删除标记为DELETED的行以清理数据库。

有可能用FK来做,还是我应该使用触发器(我真的不知道如何使用它们)或其他东西?

我试图将FK放在DELETED列之间,但是当我更新注释行时,所有链接也都更新了:/

谢谢你的帮助。

我已经完成了我想要的两种解决方案:

  • 使用触发器:伪删除(更新DELETED = 1 ...)导致link表中的伪删除。
  • 使用外键:true delete(从...删除)会在我的link表中导致true delete。

因此,我可以与基本用户一起从我的网站中伪删除行。 而且我可以使用具有删除权限的用户来批量处理我的基地。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM