我对MySQL语法比较陌生。我正在尝试建立具有不同架构的数据库。为了方便起见,我将代码分为两部分:
当要为一个表中的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;
我什至不确定创建外部外键在形式上是否正确。
有人对解决这个问题有什么建议吗? 谢谢!
答案 0 :(得分:1)
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}}
或者您不能在特定情况下引用。