我有两张桌子
CREATE TABLE Temp_1
(
ID Int IDENTITY(1,1),
Name Varchar(500)
)
CREATE TABLE Temp_2
(
ID Int IDENTITY(1,1),
Name Varchar(500)
)
INSERT INTO Temp_1
SELECT 'CC'
INSERT INTO Temp_2
SELECT Name
FROM Temp_1
WHERE 2 = 1
表Temp_2中没有插入。所以我对Temp_2表的SCOPE_IDENTITY()的预期输出为NULL。
如何将Temp_2的标识值设为null?
如果我们使用SCOPE_IDENTITY()或@@ IDENTITY,我们获得的身份值仅为表Temp_1。我们需要得到表Temp_2的标识值,即" null"因为Temp_2表中没有插入。
答案 0 :(得分:4)
都不是。您想使用output
子句:
DECLARE @ids TABLE (id INT);
INSERT INTO Temp_1
OUTPUT inserted.id INTO @ids
SELECT 'CC' ;
这是会话安全,语句安全的多线程安全。它允许您处理多行插入。它允许您返回其他列。
没有理由使用任何其他方法。