Поэтому я попытаюсь объяснить мою проблему с псевдокодом. Но прежде всего какое-то объяснение. Я пытаюсь создать простую процедуру в SQL, которая будет вставлять данные в три таблицы, где идентификаторы от table_1
и table_2
должны быть переданы в table_3
. Не уверен, как этого добиться. Я использую SQL Сервер.
псевдокод
CREATE PROCEDURE Bla
@arg VARCHAR(1)
AS
INSERT INTO table_1 VALUES(...) -- need id from here
INSERT INTO table_2 VALUES(...) -- and id from here
INSERT INTO table_3 VALUES (..., table_1_id, table_2_id)
Как вы можете догадаться, эти идентификаторы Foreign Keys
в table_3
Итак, я думал о том, чтобы сделать что-то подобное, после того как я INSERT
данные в table_1
и table_2
@tab1id = SELECT TOP 1 id from table_1 ORDER BY id DESC
@tab2id = SELECT TOP 1 id from table_2 ORDER BY id DESC
INSERT INTO table_3 VALUES (..., @tab1id, @tab2id)
Но по какой-то причине я не думаю, что это хорошая практика. Поэтому я гуглил и нашел что-то вроде SCOPE_IDENTITY
, но не уверен, как правильно его использовать, моя идея сделать что-то вроде:
INSERT INTO table_1 VALUES(...)
@tab1id = SELECT SCOPE_IDENTITY()
INSERT INTO table_2 VALUES(...)
@tab2id = SELECT SCOPE_IDENTITY()
INSERT INTO table_3 VALUES (..., @tab1id, @tab2id)
Но не уверен, что это хорошая идея, пожалуйста, дайте несколько советов .