gpt4 book ai didi

mysql - 如果 "on delete"设置为CASCADE,我应该为mysql中的外键 "on update"设置什么?

转载 作者:行者123 更新时间:2023-11-30 00:03:43 26 4
gpt4 key购买 nike

我有 3 张 table :

  • 用户(ID)
  • 角色(id)
  • user_role(id、user_id、role_id)

现在,我想设置一个外键,但我不确定 CASCADERESTRICT 之间有什么区别?

在我的情况下,在更新上应该设置什么,在在删除上应该设置什么,其中user_role基本上只是一个配对用户的数据透视表与角色。

提前谢谢您。

最佳答案

由于user_role只是一个连接表,您不太可能需要ON UPDATE - 除非您打算更改users.id>roles.id 现有行(我对此表示怀疑)。

ON DELETE RESTRICT 确保维持引用完整性,即您无法删除父行(即在用户角色中)如果 user_role 中的一行或多行引用了它。如果您确实尝试删除一行,MySQL 将抛出错误。

(至少在最新版本的 MySQL 中)我很确定您不需要包含 ON DELETE RESTRICT 因为 MySQL 在这种情况下无论如何都会抛出错误(为了保持引用)完整性)(如果您定义了外键)。

如果您希望 MySQL 在以下情况下删除 user_role 中的行,请对 user_role 中的两个外键使用 ON DELETE CASCADE您删除它引用的任何行(在用户角色中)。另一种方法是在删除一个或两个父行之前手动执行此操作(例如在代码中)。

关于mysql - 如果 "on delete"设置为CASCADE,我应该为mysql中的外键 "on update"设置什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24788271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com