【问题标题】:Two columns in same table and same foreign key同一个表中的两列和相同的外键
【发布时间】:2015-09-18 13:22:42
【问题描述】:

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

我有两张桌子,usersinvoices

invoices (user_id, created_by)
users (id)

Invoices 有两列,user_idcreated_by,我希望两者都与 users 表的 id 链接。

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 users (id))

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

提前致谢。

【问题讨论】:

    标签: mysql foreign-keys


    【解决方案1】:

    This SO post 意味着从ALTER TABLE 语句中删除您的ON DELETE RESTRICT 子句可能 解决您的问题。请尝试运行此查询:

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

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

    【讨论】:

    • 完美。你的建议对我有用。是的,我使用了 InnoBD。据我所知,使用 MyISAM 无法获得外键关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2017-11-27
    • 2018-05-08
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多