指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

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;

可以临时设置不检查外键约束,删除即可