mysql之数据库外键约束的配置:
关于数据库外键约束的配置,常见的会给 onDelete 配置一些操作,比如: onDelete: 'CASCADE'
CASCADE:
在数据库中,外键(foreign key)是指一个表中的字段,它关联到另一个表中的主键(primary key)。当在一个表中定义了外键,并且设置了 onDelete: 'CASCADE',这意味着当参考的行(被外键引用的行)被删除时,将会自动删除包含该外键的行,以维持数据的完整性和一致性。
如果不想在删除关联的行时自动删除包含外键的行,可以按下面的配置:
RESTRICT:
当被引用的行被删除时,会阻止删除包含外键的行,除非没有任何引用该行的行存在。
NO ACTION:
类似于 RESTRICT,当被引用的行被删除时,不会执行任何操作,除非没有任何引用该行的行存在。
SET NULL:
当被引用的行被删除时,外键列将被设置为 NULL 值。
SET DEFAULT:
当被引用的行被删除时,外键列将被设置为其默认值。
mysql8删除数据,由于外键约束的问题:
Cannot delete or update a parent row: a foreign key constraint fails (sciforum_dev.event_person_affiliations, CONSTRAINT FK_296B1A6AA7EE857A FOREIGN KEY (event_person_id) REFERENCES event_persons (id))
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM event_persons WHERE session_id IS NULL;
SET FOREIGN_KEY_CHECKS = 1;
可以临时设置不检查外键约束,删除即可
