从select插入插入的MS SQL输出

时间:2018-02-05 09:50:27

标签: sql sql-server

我试图弄清楚如何组合INSERT FROM SELECT并返回插入记录的id值。

INSERT INTO [someDB].[dbo].[OBJ] ( column1, column2, column3 ) 
OUTPUT inserted.ID (SELECT TOP 1 590675, column2, column3 
                    FROM [someDB].[dbo].[OBJ] WHERE ID = 317817)

2 个答案:

答案 0 :(得分:1)

如果您在INSERT语句后尝试获取新ID,则可以使用SCOPE_IDENTITY, IDENT_CURRENT or @@IDENTITY。例如:

INSERT INTO [someDB].[dbo].[OBJ] ( column1, column2, column3 )

SELECT TOP 1
   590675,
   column2,
   column3
FROM [someDB].[dbo].[OBJ] WHERE ID = 317817
ORDER BY ...
SELECT SCOPE_IDENTITY(); -- Last identity generated in current session and current scope
SELECT @@IDENTITY; -- Last identity generated in current session across all scopes
SELECT IDENT_CURRENT([someDB].[dbo].[OBJ]) -- Last identity generated for the given table in any session and any scope

因为您只插入一行,SCOPE_IDENTIY()将是最好的方法。

希望它有所帮助。

答案 1 :(得分:0)

你的语法在这里有点不对。

你想:

text.getBytes()