gpt4 book ai didi

MySQL 和外键

转载 作者:行者123 更新时间:2023-11-29 00:51:55 26 4
gpt4 key购买 nike

我对 InnoDB 表中的外键有疑问。我的数据库中有 4 个表:

注册:

  • UID - 主键
  • 阿菲德
  • 平面
  • 行业编号

附属机构:

  • Afid - 主键

计划:

  • 计划 - 主键

行业:

  • Industryid - 主键

我用来添加键的SQL:

CONSTRAINT `FK_signup_industries` FOREIGN KEY (`industryid`) REFERENCES `industries` (`industryid`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_signup_affiliates` FOREIGN KEY (`afid`) REFERENCES `affiliates` (`afid`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_signup_plans` FOREIGN KEY (`planid`) REFERENCES `plans` (`planid`) ON UPDATE CASCADE ON DELETE CASCADE

我的问题是:

如果我要删除他们各自表格中的计划或行业,注册表中的用户是否会被删除?我试图找到这方面的指南,但他们并没有很好地解释它。

基本上,我需要做的是无论如何都不要删除注册表中的行。当我使用这个查询时:

CONSTRAINT `FK_signup_plans` FOREIGN KEY (`planid`) REFERENCES `plans` (`planid`) ON UPDATE CASCADE ON DELETE NO ACTION

我收到这个错误:

Cannot delete a parent row.

最佳答案

如果即使您删除了 Industries、Affiliates 或 Plans 中引用的行,您也需要保留 Signup 中的行,那么您有两个选择:

  • 不要声明外键约束。这消除了引用完整性的实现,但它允许在 Signup 中存在引用不再存在的父主键值的行。

  • 使用 ON DELETE SET NULL。这允许该行保留,但引用现已删除的父级的外键值将被更改。*

有关详细信息,请参阅 http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

* 标准SQL规范也定义了一条规则ON DELETE SET DEFAULT,但是InnoDB不支持这个特性。

关于MySQL 和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159606/

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