Мне нужно вставить строку в 2 таблицы с соответствующими идентификаторами. При вставке в таблицу групп идентификатор автоматически увеличивается.

Я хочу вставить новую строку в таблицу «группы», получить идентификатор из вставленной строки, а затем использовать его для вставки новой строки в таблицу «users_in_groups».

Что я имею:

INSERT INTO groups (name, owner_id ) VALUES ('groupname1', 'userid1');
INSERT INTO users_in_groups (user_id, group_id) VALUES ('userid1', group_id_from_above);

Я старался

INSERT INTO groups (name, owner_id ) OUTPUT Inserted.id VALUES ('group1', 'user1');

Но я не знаю, как заставить работать 2 «вставки» на 1 запрос. Это вообще возможно?

0
WhiteHatMan 2 Май 2020 в 15:03
1
Вы используете MySQL или SQL Server? Синтаксис OUTPUT соответствует SQL Server.
 – 
Gordon Linoff
2 Май 2020 в 15:04
Я использую MySQL. Есть ли альтернатива выходу?
 – 
WhiteHatMan
2 Май 2020 в 18:12
. . Да. GMB ответил на ваш вопрос, вы должны принять ответ.
 – 
Gordon Linoff
3 Май 2020 в 01:17

1 ответ

В MySQL вы можете использовать LAST_INSERT_ID():

INSERT INTO groups (name, owner_id ) VALUES ('groupname1', 'userid1');
INSERT INTO users_in_groups (user_id, group_id) VALUES ('userid1', LAST_INSERT_ID());
2
GMB 2 Май 2020 в 15:03
Это получает идентификатор текущей таблицы для вставки, если я не ошибаюсь.
 – 
WhiteHatMan
2 Май 2020 в 18:13
@WhiteHatMan: это вставляет в users_in_groups идентификатор, сгенерированный при вставке в groups - так я понял ваш вопрос.
 – 
GMB
2 Май 2020 в 18:34