mysql - 添加外键时,如果指定约束则不会添加

标签 mysql sql

如果我这样做

  ALTER TABLE cp8_sales_order_flat 
  ADD CONSTRAINT fk_customer 
  FOREIGN KEY (customer_id) 
  REFERENCES customers(id) 
  ON DELETE SET NULL
  ON UPDATE CASCADE;

会说无法添加外键错误1215

如果我只是写

ALTER TABLE sales_flat_order
ADD FOREIGN KEY (customer_id) REFERENCES customers(id);

然后它添加 FK 和约束,但它被设置为:restrict。

在我看来,这将允许正确的选择连接查询,但不允许删除或更新。为什么是这样?任何修复?

更新

原因之一也可能是您用于 ON DELETE SET NULL 的列未定义为空。因此,请确保该列设置为默认 null。

这是我认为的,因为我检查了其他所有内容,类型、排序规则、长度、属性

最佳答案

我的列 customer_id 设置为不为空,而我在约束中说“删除时”设置为空,所以这就是我所说的逻辑精神 split 症,就像在我们有数千万失业人口时投票支持更多移民人们在欧洲。幸运的是,在这里我可以重写约束,但在政治上却不是这样。

关于mysql - 添加外键时,如果指定约束则不会添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355542/

相关文章:

php - MySQL 搜索与搜索项中的整数匹配

html - 尝试使用 AJAX 添加到数据库

mysql - 根据 2 列选择行

php - 显示包含 2 个输入字段条件的表格

mysql - 在 phpmyadmin 设计器 View 中拖动表格

Sql Server - 在 where 子句中执行 RTRIM/LTRIM 的替代方法

java - 日期转换jsp

sql - 执行由 SQL 查询生成的脚本

mysql - SQL 在按 column1 分组后更新 column3 并比较 column2 中的值

mysql - 我如何在mysql中通过uuid从表中选择