users->userid(主要)-> session ->用户ID(索引) 在此过-6ren">
gpt4 book ai didi

mysql - 设置表关系 "Cascade"、 "Set Null"和 "Restrict"做什么?

转载 作者:行者123 更新时间:2023-11-29 23:46:48 30 4
gpt4 key购买 nike

我想开始在新项目中使用表关系。

经过一番谷歌搜索后,我得到了 2 个表设置为 InnoDB:

我想要链接的键是

->users->userid(主要)-> session ->用户ID(索引)

在此过程中我唯一不明白的是“更新时”和“删除时”的不同设置的作用

这里的选项是:

  • --(什么都没有?)
  • 级联(???)
  • Set Null(将所有内容设置为 null?)
  • 没有采取任何行动(好吧……)
  • 限制(???)

我基本上希望当用户完全删除时 session 中的数据也被删除这是因为只有当我的 session 管理器检测到过期时, session 才会被删除...

因此,如果有人能告诉我这些选项的作用,我将不胜感激。

最佳答案

CASCADE 将在父级更改时传播更改。 (如果删除一行,约束表中引用该行的行也将被删除,等等)

SET NULL 当父行消失时将列值设置为 NULL。

RESTRICT 导致尝试删除父行失败。

编辑:您没有询问它们,但 SQL 标准定义了另外两个操作:SET DEFAULTNO ACTION。在 MySQL 中,NO ACTION 相当于 RESTRICT。 (在某些 DBMS 中,NO ACTION 是延迟检查,但在 MySQL 中,所有检查都是立即进行的。)MySQL 解析器接受 SET DEFAULT,但 InnoDB 和 NDB 引擎都拒绝这些语句,因此 SET DEFAULT 实际上不能用于 ON UPDATEON DELETE 约束。

另请注意,级联外键操作不会激活 MySQL 中的触发器。

关于mysql - 设置表关系 "Cascade"、 "Set Null"和 "Restrict"做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25882985/

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