我想在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)和{{1 TEXT(=> NULL)。
我知道我可以在articles
。ARTICLE_ID和link
。ID之间使用外键,例如,只需删除行。但我对我的网站使用的用户提出了有限的权利。我将使用更强大的用户来批量删除标记为DELETED的行以清理数据库。
是否有可能用FK做,或者我应该使用触发器(我真的不知道如何使用它们)或其他什么?
我试图将FK放在DELETED列之间,但是当我更新注释行时,所有链接都会更新:/
感谢您的帮助。
答案 0 :(得分:0)
我已经用2种解决方案做了我想要的事情:
link
表中导致伪删除。link
表中的真正删除。因此,我可以使用基本用户从我的网站伪删除行。 我可以使用具有删除权限的用户清理我的基础。