我正在开发一个应用程序,实际上是一个计费系统。在这里,会计可以为客户添加发票。
我有两个表,users
和invoices
:
invoices (user_id, created_by)
users (id)
发票有两列,user_id
和created_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
))
我不确定是否可以添加两列作为外键。如果可能的话,请你建议这样做吗?
提前致谢。
答案 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创建的,后者不强制使用外键。