获取上次生成的ID并将其添加到另一个表ASP.NET

时间:2014-04-17 10:14:24

标签: c# sql sql-server

如何从主键获取生成的ID,然后通过SCOPE_IDENTITY将其添加到ASP.NET中的另一个表? 例如:

enter image description here

enter image description here

列NRRENDOR上的最后生成的ID是26,我删除了行。现在,当我向数据库添加数据时,NRRENDOR上的nexy生成的ID将是27号。我希望它添加到NRD列。

2 个答案:

答案 0 :(得分:1)

INSERT代码中,假设它在存储过程中,使用SCOPE_IDENTITY将获得插入的最后一个标识,您可以在存储过程中重复使用或返回到您的应用程序以在另一个声明中使用。

要演示的一些虚拟SQL:

INSERT INTO NRRENDOR(SomeColumn) VALUES(1)

DECLARE @LastID int
// set @LastID to the last id inserted
SELECT @LastID = SCOPE_IDENTITY()

// to use in same procedure
INSERT INTO NRD (SomeColumn) VALUES(@LastID)

// to return it to code - or you could use an output parameter
SELECT @LastID

答案 1 :(得分:0)

这与ASP.NET有什么关系? SQL就足够了。

INSERT INTO [Table2]( NRD)
SELECT  MAX(NRRENDOR)
FROM    Table1
' WITH (ROWLOCK, XLOCK, HOLDLOCK)

执行此操作的正确方法是在执行Tanner suggested插入后使用@SCOPE_IDENTITY。值得注意的是,还有另一种获取当前身份的方法,即IDENT_CURRENT。你可以像这样使用它

SELECT IDENT_CURRENT('Table1') + 1 as Current_Identity

请注意这一点

  

使用IDENT_CURRENT预测下一次生成时要小心   身份价值。实际生成的值可能不同于   IDENT_CURRENT加上IDENT_INCR,因为其他人执行了插入操作   会话。

来自marc_s的评论总结了这一切。 How to get the next identity value from SQL Server