使用IDENT_CURRENT()删除标识值

时间:2016-12-03 18:43:08

标签: sql-server tsql

我有下表:

CREATE TABLE MyTable
(
     ID INT NOT NULL identity(1,1),
     Name NVARCHAR(50) NOT NULL
);

我需要从MyTable两条记录中删除:第一条记录在MyTable中具有最后一个标识值,第二条记录在当前会话中具有最后一个标识值。

澄清:必须使用IDENT_CURRENT('MyTable')SCOPE_IDENTITY()@@IDENTITY来完成。

请帮助您提出建议。

1 个答案:

答案 0 :(得分:0)

您必须使用@@IDENTITY来获取当前会话中使用的最后一个身份 IDENT_CURRENT('MyTable')获取此表中使用的最后一个身份

DELETE FROM MyTable
WHERE ID IN (SELECT IDENT_CURRENT('MyTable'))
OR ID = @@IDENTITY

阅读此Article了解更多信息

<强> EDIT1

如果要删除表中找到的最后一个标识值,可以使用MAX()聚合函数

DELETE FROM MyTable
WHERE ID = (SELECT MAX(ID) FROM MyTable WHERE ID <= @@IDENTITY)

注意: IDENT_CURRENT('MyTable')SCOPE_IDENTITY()@@IDENTITY不依赖于表格中存储的值