gpt4 book ai didi

mysql - 如何设置指向不同模式中的表的外键约束?

转载 作者:行者123 更新时间:2023-12-04 09:08:32 26 4
gpt4 key购买 nike

我对 MySQL 语法比较陌生。我正在尝试建立一个具有不同架构的数据库。为方便起见,我将代码分为两部分:

  • 在第一部分中,我在每个模式中创建表而不施加外键约束
  • 在第二部分中,我正在编写 ALTER TABLE 命令来创建外键关系。

  • 在为指向另一个模式中的表的表中的 ID 创建外键约束时,我得到
    “错误代码:1824。无法打开引用的表 'schema_a.table_a”。
    实际上,我已经这样做了:
    #First part
    CREATE SCHEMA `schema_a`
    USE `schema_a`;
    CREATE TABLE `table_a`
    (
    IDa INTEGER NOT NULL,
    ...
    PRIMARY KEY(`IDa`)
    )ENGINE=InnoDB, CHARSET=..., Collate=...;


    CREATE SCHEMA `schema_b`
    USE `schema_b`;
    CREATE TABLE `table_b`
    (
    IDb INTEGER NOT NULL,
    IDa INTEGER NOT NULL,
    ...
    PRIMARY KEY(`IDb`)
    )ENGINE=InnoDB, CHARSET=..., Collate=...;

    #Second part
    USE `Schema_b`;
    ALTER TABLE `table_b`
    ADD CONSTRAINT `FK_IDa` FOREIGN KEY (`IDa`) REFERENCES `schema_a.table_a`(`IDa`) ON DELETE CASCADE ON UPDATE CASCADE;
    我什至不确定创建外部外键在形式上是否正确。
    有没有人有任何建议来解决这个问题?
    谢谢!

    最佳答案

    `schema_a.table_a`意味着 标识符,即 MySQL 假定只有表名是 schema_a.table_a .您需要单独引用多部分标识符的每个部分,如 `schema_a`.`table_a` .

    ALTER TABLE `table_b`
    ADD CONSTRAINT `FK_IDa`
    FOREIGN KEY (`IDa`)
    REFERENCES `schema_a`.`table_a`
    (`IDa`)
    ON DELETE CASCADE
    ON UPDATE CASCADE;
    或者你不能在你的特定情况下引用。

    关于mysql - 如何设置指向不同模式中的表的外键约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63402225/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com