Я пытаюсь иметь 2 таблицы со скрещенными внешними ключами, но мне не разрешено ссылаться на таблицу, которая не существует, когда я их создаю. Любой способ создания таких таблиц для mysql, что-то вроде объявления обеих таблиц в одно и то же время или задержки оценки внешних ключей?Перекрестные внешние ключи в SQL
Ошибка 1005: Не удается создать таблицу blocks.frm (ERRNO 150) на MySQL 5.0
SQL:
create table if not exists blocks(
id int unsigned not null auto_increment,
title varchar(100),
defaultpage int unsigned not null,
foreign key(defaultpage) references pages(pageID),
primary key(id)) engine=innodb;
create table if not exists pages(
pageID int unsigned not null auto_increment,
title varchar(50) not null,
content blob,
blockid int unsigned not null,
foreign key(blockid) references block(id),
primary key(pageID)) engine=innodb;
Что такое правильный способ решить эту проблему?
Как вы собираетесь вставить данные в таблицы во время выполнения? Кажется, что вы не можете вставлять данные в одну из таблиц, потому что в зависимости от того, что вы вставляете, сначала требуется ссылка на запись (которая еще не существует) в другой таблице. – ChrisW
Хорошая точка. Я думаю, единственный вариант - использовать «вставить из select», который в этом конкретном случае воняет. Хорошим решением было бы сделать block.defaultpage нулевым. –
Другим решением является добавление внешнего ключа после установки записи данных по умолчанию [s]. – ChrisW