Как вставить строку в таблицу с двумя FK в MySQL? - PullRequest
0 голосов
/ 24 января 2019

Допустим, у нас есть 3 таблицы в MySQL, например:

  • T1 {id_t1, id_t2, id_t3} с внешними ключами {T2.id_t2, T3.id_t3}
  • T2 {id_t2, foo, bar} с первичным ключом {id_t2}
  • T3 {id_t3, baz} с первичным ключом {id_t3}

Я хочу вставить новую строку в T1, T2 и T3, где создание строки T1 требует создания строк T2 и T3. Я не могу сделать это с 3 INSERT запросами, потому что значение LAST_INSERT_ID() изменяется после создания строки.

Однако мне нужно создать строки T2 и T3 непосредственно перед строкой T1.

Как я могу создать конвейер, который создает строки T3 и T2, а затем с их PK создает строку T1?

1 Ответ

0 голосов
/ 24 января 2019

Вы можете захватить LAST_INSERT_ID, используя переменные

INSERT INTO T2 ... ;
SET @var2 := last_insert_id();
INSERT INTO T3 ... ;
SET @var3 := last_insert_id();

INSERT INTO T1 SET
id_t2 = @var2,
id_t3 = @var3
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...