子表和外键

时间:2014-09-10 17:49:20

标签: mysql mariadb

我知道有很多关于主键和外键的问题。透过它们,我似乎无法找到一个简单的答案来回答我的问题。我对主键和外键的理解是外键是子表中指定的列,它将主键作为父表中的列引用。这是正确的,还是我倒退了?如果这确实是正确的,我试图找出为什么我在子表中创建外键有困难:

salesorders.sonumber(pk)< customer.sonumber(fk)

我正在使用带有MariaDB的Navicat(与MySQL相同),我得到的错误是:

1452 - 无法添加或更新子行:外键约束失败(' customer_orders'' #sql7a8_3&#39 ;; CONSTRAINT' sonumber' FOREIGN KEY( ' sonumber')参考'销售订单'(' sonumber')在更新CASCADE上删除无操作

Customer_orders是数据库名称。我正在命名外键' sonumber'它与子表(customer)和父表(salesorders)中的列名相同。这是不正确的?我应该给外键另一个名字吗?

gitpicker

1 个答案:

答案 0 :(得分:0)

外键应该有自己唯一的名称,是的。 sonumber_fk或类似的东西是一个简单的命名方案。

您还需要确保外键列中的每个条目在Referenced表中都有相应的条目,否则您将无法创建外键。