【发布时间】:2011-04-23 17:32:54
【问题描述】:
我想知道在 MySQL 的 InnoDB 中是否有可能有一个带有 外键 的 table 引用不同 database 中的另一个表?
如果是这样,如何做到这一点?
【问题讨论】:
标签: mysql database foreign-keys innodb
我想知道在 MySQL 的 InnoDB 中是否有可能有一个带有 外键 的 table 引用不同 database 中的另一个表?
如果是这样,如何做到这一点?
【问题讨论】:
标签: mysql database foreign-keys innodb
有可能:Link to do it
示例(Table1 在 database1 中,HelloTable 在 database2 中):
ALTER TABLE Table1
ADD foreign key FK_table1(ColumnNameFromTable1)
REFERENCES db2.HelloTable(ColumnNameFromHelloTable)
【讨论】:
我认为https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html 没有任何限制。
所以只需使用 otherdb.othertable 就可以了。
【讨论】:
ALTER TABLE my_table ENGINE = InnoDB; 适用于 MariaDB 10.1.16。
下面是如何在表t2上添加外键,参考表db1.historial(codh):
alter table t2
add foreign key FK_t2(micod2)
references db1.historial(codh)
on delete cascade
on update cascade;
【讨论】:
ALTER TABLE `tablename1`
ADD CONSTRAINT `tablename1_student_id_foreign`
FOREIGN KEY (`tablename1`.`id`)
REFERENCES `db2`.`tablename2`(`id`)
ON DELETE CASCADE ON UPDATE CASCADE;
如果我们在 db1 中有表调用答案,在 db2 中有学生调用 ramiyusu_offline
我们必须输入如下
ALTER TABLE `answers`
ADD CONSTRAINT `answers_student_id_foreign`
FOREIGN KEY (`id`)
REFERENCES `ramiyusu_offline`.`student`(`id`)
ON DELETE CASCADE ON UPDATE CASCADE;
【讨论】: