我想开始在新项目中使用表关系。
经过一番搜索之后,我将2个表设置为InnoDB:
我要链接的键是
->用户->用户ID(主要)->会话->用户ID(索引)
在此过程中,我唯一不了解的是“更新时”和“删除时”的不同设置做了什么
这里的选项是:
我基本上希望在用户完全删除后删除会话中的数据,这是因为仅当我的会话管理器检测到到期时,才删除会话。
因此,如果有人可以告诉我这些选项的作用,将不胜感激。
CASCADE将在父项更改时传播更改。(如果删除行,则约束表中引用该行的行也将被删除,等等。)
CASCADE
SET NULL 当父行消失时,将列值设置为NULL。
SET NULL
RESTRICT 导致尝试删除父行失败。
RESTRICT
编辑:您没有询问它们,但是SQL标准定义了另外两个操作:SET DEFAULT和NO ACTION。在MySQL中,NO ACTION等效于RESTRICT。(在某些DBMS中,这NO ACTION是一个延迟检查,但是在MySQL中,所有检查都是立即执行的。)MySQL解析器接受SET DEFAULT,但是InnoDB和NDB引擎均拒绝这些语句,因此SET DEFAULT实际上不能用于ON UPDATEor或ON DELETE约束。
SET DEFAULT
NO ACTION
ON UPDATE
ON DELETE
另外,请注意,级联外键操作不会激活MySQL中的触发器。