Внешний ключ MySQL InnoDB между разными базами данных

Я хотел бы знать, возможно ли в InnoDB в MySQL иметь table с внешним ключом, который ссылается на другую таблицу в другом database?

И если да, то как это можно сделать?


person Alaa    schedule 11.10.2010    source источник


Ответы (3)


Я не вижу никаких ограничений на https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html.

Так что просто используйте otherdb.othertable, и все будет хорошо.

person BarsMonster    schedule 11.10.2010
comment
@Code4R7 Убедитесь, что в таблицах используется тот же движок, что и в документации. : Родительская и дочерняя таблицы должны использовать один и тот же механизм хранения[...] Чтобы изменить механизм таблицы, ALTER TABLE my_table ENGINE = InnoDB; работало для MariaDB 10.1.16. - person iloo; 20.12.2017

Это возможно: Ссылка для этого

Пример (Table1 находится в базе данных1, а HelloTable — в базе данных2):

ALTER TABLE Table1 
ADD foreign key FK_table1(ColumnNameFromTable1)
REFERENCES db2.HelloTable(ColumnNameFromHelloTable)
person Spilarix    schedule 11.10.2010
comment
+1 Должен добавить, что если бы в дополнение к ссылке вы суммировали содержание ссылки в ответе здесь, это было бы немного полезнее! - person Jagmag; 11.10.2010
comment
-1 Ссылки недостаточно, ответ должен содержать больше информации (пояснение или пример). - person automatix; 19.05.2014

Ниже описано, как добавить внешний ключ в таблицу t2, ссылка из таблицы db1.historial(codh):

alter table t2
add foreign key FK_t2(micod2)
    references db1.historial(codh)
    on delete cascade
    on update cascade;
person Salim    schedule 09.09.2014