执行此查询时
DECLARE @Temp TABLE (ID INT IDENTITY,Name VARCHAR(50),ID2 INT NULL)
INSERT INTO @Temp ([Name]) VALUES ('Ali')
UPDATE @Temp SET ID2= (SELECT SCOPE_IDENTITY()) WHERE [ID]=(SELECT SCOPE_IDENTITY())
INSERT INTO @Temp ([Name]) VALUES ('Veli')
UPDATE @Temp SET ID2= (SELECT SCOPE_IDENTITY()) WHERE [ID]=(SELECT SCOPE_IDENTITY())
SELECT * FROM @Temp
我们可以得到这张表
ID-NAME-ID2
1 - Ali - 1
2 - Veli - 2
有没有办法在一个插入查询中执行此操作(将插入的id分配给另一列而不使用该列中的idendity属性)?
非常感谢。
答案 0 :(得分:0)
您希望将其设为如下所示的计算列
create TABLE Temp(ID INT IDENTITY,Name
VARCHAR(50),
ID2 AS ID PERSISTED);
然后插入行...您的ID值将保留在ID2列
中INSERT INTO Temp ([Name])
VALUES ('Ali');
INSERT INTO Temp ([Name])
VALUES ('Veli');
INSERT INTO Temp ([Name])
VALUES ('Neli');
将导致
在此处查看演示小提琴http://sqlfiddle.com/#!3/59fca/1
修改强>
如果您无法更改表结构,那么将ID值插入ID2列的唯一方法就是您当前正在执行此操作的方式导致同一个insert语句中的标识值仍然不可用,因此它将为null