获取最后插入的ID

时间:2014-08-01 06:32:36

标签: sql sql-server tsql

我想获取插入表中的最后一行的ID,并将其与SQL Server中的变量一起使用。

这是我的代码:

SELECT IDENT_CURRENT('profiles')

我尝试添加where子句

SELECT IDENT_CURRENT('profiles') WHERE profiles.userid = '2'

这是我的错误:

  

多部分标识符" profiles.userid"无法受约束。

1 个答案:

答案 0 :(得分:2)

您的第二个查询

要使WHERE子句的第二个查询起作用(到它没有错误的程度),您需要锚定多部分标识符profiles.userid FROM

SELECT IDENT_CURRENT('profiles') FROM profiles WHERE profiles.userid = '2'

但这没有多大意义因为WHERE子句不会真正改变底线结果(即为profile生成的最后一个身份) - 只是可能在结果集中多次包含它。

返回第一个查询

如果您确实希望为profile生成的最后一个标识值删除它标识的行,那么您的第一个查询...

SELECT IDENT_CURRENT('profiles')

...是要走的路。

当然,您需要在profile语句中使用为DELETE生成的最后一个标识值,而不仅仅是SELECT - 例如(假设标识列在profilesid)...

DECLARE @lastID int;
SELECT @lastID = IDENT_CURRENT('profiles');

DELETE FROM profiles WHERE id = @lastID;

...,这真的会更好地说:

DELETE FROM profiles WHERE id = IDENT_CURRENT('profiles');