Sql server sqlserver将最后插入的Id分配给一个查询中的另一列
执行此查询时Sql server sqlserver将最后插入的Id分配给一个查询中的另一列,sql-server,Sql Server,执行此查询时 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') UPDAT
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
在一个insert查询中是否有这样做的方法(将插入的id分配给另一列而不使用该列中的idendity属性)
非常感谢。您想让它成为如下所示的计算列吗
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');
这将导致
这里有小提琴演示吗
编辑:
如果无法更改表结构,则将ID值插入ID2列的唯一方法是您当前的操作方式,因为在同一insert语句中,标识值仍然不可用,因此将为空。谢谢,但这不是我的表(实际数据库)(不是我的应用程序),因此我无法更改表定义。我只想将数据插入数据库。@ttn,如果有帮助,请不要忘记将其标记为答案(通过单击投票按钮下方的复选按钮)。非常感谢,我们可以说我们不能在插入中使用选择范围标识吗query@ttn是的,这正是我的意思。