SQL. Как вставить данные в две таблицы за один раз, когда одна связана с другой с помощью внешнего ключа - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть две таблицы:

Attr.type_id - это внешний ключ для Type.id

enter image description here

Предположим, я хочу чтобы сохранить следующие данные:

{
  name: 'cats',
  attributes: ['breed', 'weight']
}

Я ожидаю этого после сохранения:

enter image description here

Как правильно написать запрос на вставку ?

Я знаю, что не могу вставить в две таблицы одновременно. Должен ли я использовать транзакции? Или, может быть, есть простой способ, потому что это кажется тривиальным, но на самом деле это не так.

Если вы знаете, как сделать это с помощью TypeORM, он также будет благодарен

Обновление: я используя PostgreSQL

1 Ответ

2 голосов
/ 12 апреля 2020

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

...