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

时间:2017-06-04 15:11:02

标签: 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。因此,请确保将列设置为默认值。

这是我认为的,因为我检查了其他所有内容,类型,整理,长度,属性

1 个答案:

答案 0 :(得分:2)

我的列customer_id被设置为非null,而我在约束中说“on delete”设置为null,所以我称之为逻辑精神分裂症,就像我们有数千万失业者投票支持更多移民欧洲人。幸运的是,我可以重写约束,而不是政治。