我正在做
INSERT INTO table1...
SELECT...
FROM table2
但是,我需要从table3中检索标识并在插入table1之前插入它。这两个插件需要一起出现,首先是table3插件。我尝试过这样的事情:
INSERT INTO table1 (col1, col2, col3)
SELECT (
col1=(insert into table3(col1, col2)values(1,1) select SCOPE_IDENTITY(),
col2, col3)
FROM table2
但这不起作用。 table1.col1确实需要将新插入到table3中的标识值。要插入的数据量可能不超过几百行。有什么建议吗?
答案 0 :(得分:2)
您似乎可以使用Output Clause。
BEGIN TRANSACTION
DECLARE @MyResults table(col1 int, col2 int, col3 int);
INSERT INTO table3 (col1, col2)
OUTPUT SCOPE_IDENTITY(), table2.col2, table2.col3 INTO @MyResults
SELECT 1, 1 FROM table2
INSERT INTO table1 (col1, col2, col3)
SELECT col1, col2, col3 FROM @MyResults
COMMIT