同一个表中的两列和相同的外键

时间:2015-09-18 05:07:57

标签: mysql foreign-keys

我正在开发一个应用程序,实际上是一个计费系统。在这里,会计可以为客户添加发票。

我有两个表,usersinvoices

invoices (user_id, created_by)
users (id)

发票有两列,user_idcreated_by,我希望两者都与id表的users相关联。

已将user_id添加为外键。现在我尝试添加created_by作为外键。发出如下命令:

ALTER TABLE `invoices`
ADD FOREIGN KEY (`created_by`) REFERENCES `secureap_maind`.`users` (`id`)
ON DELETE RESTRICT ON UPDATE RESTRICT;

我收到了错误消息。

  

#1452 - 无法添加或更新子行:外键约束失败(secureap_maind#sql-3717_a323d,CONSTRAINT #sql-3717_a323d_ibfk_2 FOREIGN KEY(created_by)REFERENCES {{ 1}}(users))

我不确定是否可以添加两列作为外键。如果可能的话,请你建议这样做吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

This SO post表示从ON DELETE RESTRICT语句中删除ALTER TABLE条款可能会解决您的问题。请尝试改为运行此查询:

ALTER TABLE `invoices`
ADD FOREIGN KEY (`created_by`) REFERENCES `secureap_maind`.`users`(`id`)

我假设invoices表是使用InnoDB而不是MyISAM创建的,后者不强制使用外键。

相关问题