微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何设置指向不同架构中的表的外键约束?

如何解决如何设置指向不同架构中的表的外键约束?

我对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,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`。您需要像在ALTER TABLE `table_b` ADD CONSTRAINT `FK_IDa` FOREIGN KEY (`IDa`) REFERENCES `schema_a`.`table_a` (`IDa`) ON DELETE CASCADE ON UPDATE CASCADE; 中一样分别引用多部分标识符的每个部分。

{{1}}

或者您不能在特定情况下引用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。