Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用IDENT_CURRENT()删除标识值_Sql Server_Tsql - Fatal编程技术网

Sql server 使用IDENT_CURRENT()删除标识值

Sql server 使用IDENT_CURRENT()删除标识值,sql-server,tsql,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来完成 请给出您的建议。您必须使用@@IDENTITY才

我有下表:

CREATE TABLE MyTable
(
     ID INT NOT NULL identity(1,1),
     Name NVARCHAR(50) NOT NULL
);
我需要从MyTable中删除两条记录:第一条记录具有MyTable中的最后一个标识值,第二条记录具有当前会话中的最后一个标识值

澄清一下:必须使用IDENT_CURRENT'MyTable',SCOPE_IDENTITY或者@IDENTITY来完成

请给出您的建议。

您必须使用@@IDENTITY才能获取当前会话中使用的最后一个标识,并且 IDENT_当前“MyTable”以获取此表中使用的最后一个标识

DELETE FROM MyTable
WHERE ID IN (SELECT IDENT_CURRENT('MyTable'))
OR ID = @@IDENTITY
阅读此内容了解更多信息

编辑1

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

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

注意:IDENT_CURRENT'MyTable',SCOPE_IDENTITY和@@IDENTITY不取决于表中存储的值

似乎不适用。你试过什么?为什么?我尝试了多个查询F.e:{使用cte作为从MyTable中选择id,其中id=ident_current'MyTable'从cte中删除},但我不理解在删除id=ident_current'MyTable'后如何删除当前会话中的最后一个值,因为@identity和scope\u identity返回的值=ident\u当前的“Mytable”scope\u identity和@identity可能为Mytable或其他一些表提供值@@当涉及到触发器时,标识尤其有趣。如果上一次插入已回滚或行已删除,则IDENT_CURRENT不会为您提供所需的值。你真的只是想删除最近添加的两行吗?假设identity列没有重新设定种子?我需要删除两条记录。此查询仅删除了1条记录。如何删除此删除后的最后一个标识值?如果拆卸前的ident_current=19117,拆卸后的ident_current=19117,为什么不使用MAXID??IDENT_CURRENT存储identity的最后一个值即使它被删除IDENT_CURRENT'MyTable',SCOPE_identity和@identity不取决于表中存储的值确切地说,我可以使用MAXID或IDENT_CURRENT'MyTable'-1。我认为这是一种诡计,但这个问题可以用你的解决方案来解决。多谢各位。