我有下表:
CREATE TABLE MyTable
(
ID INT NOT NULL identity(1,1),
Name NVARCHAR(50) NOT NULL
);
我需要从MyTable
两条记录中删除:第一条记录在MyTable
中具有最后一个标识值,第二条记录在当前会话中具有最后一个标识值。
澄清:必须使用IDENT_CURRENT('MyTable')
,SCOPE_IDENTITY()
或@@IDENTITY
来完成。
请帮助您提出建议。
答案 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
不依赖于表格中存储的值