Можем ли мы иметь две взаимные ссылки на внешние ключи

Если две таблицы A и B должны иметь взаимные ссылки на внешний ключ, каждое ограничение внешнего ключа может быть определено в операторах создания таблицы для A и B. Я пытаюсь сделать это в pgAdmin, но это показывает ошибку. Я хочу просто проверить, является ли это утверждение истинным или ложным. У меня есть сомнения, что для добавления ссылки на внешний ключ в дочернюю таблицу. У него должна быть родительская таблица. Кто-нибудь может это подтвердить?

Отвечает ли это на ваш вопрос? mysql — взаимозависимые внешние ключи

philipxy 09.04.2022 20:52
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, у вас могут быть взаимные ссылки на внешние ключи, но вы не можете определить их оба, используя только create table. Причина в том, что когда вы определяете первую таблицу, вторая таблица еще не существует, поэтому вы не можете ссылаться на нее во внешнем ключе.

create table A (id serial primary key, Bid serial references B);

create table B (id serial primary key, Aid serial references A);

Возвращает эту ошибку при создании таблицы A:

Schema Error: error: relation "b" does not exist

И поскольку A не удалось создать, таблица создания B также возвращает ошибку:

Schema Error: error: relation "a" does not exist

Вместо этого вам нужен еще один шаг. Сначала создайте таблицу A, затем создайте таблицу B со ссылкой на внешний ключ на таблицу A, затем добавлять внешний ключ на таблицу A. Теперь, когда таблица B существует, вы можете сослаться на нее.

create table A (id serial primary key);

create table B (id serial primary key, Aid serial references A);

alter table A add Bid serial references B;

https://www.db-fiddle.com/f/gb9vo1fQy8Jty1pGdn8Q7o/0

Другие вопросы по теме