首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取MySQL中上次删除的ID

获取MySQL中上次删除的ID
EN

Stack Overflow用户
提问于 2011-12-21 07:02:06
回答 5查看 23.9K关注 0票数 15

LAST_INSERT_ID()类似,MySQL中有没有一种很好的机制,可以在删除一行之后获取最后删除的ID?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-21 07:05:58

我想你说的"ID“指的是”自动递增“?

因为您可以随时删除任意行(或行集):不,没有办法知道您最近删除了哪一行(或哪几行)。

但是,您可以创建一个“触发器”来为您保存此信息:

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

票数 12
EN

Stack Overflow用户

发布于 2011-12-22 17:21:58

每次删除时都需要使用此触发器,而不是创建触发器

代码语言:javascript
复制
declare @table1 table(id int identity,name varchar(50))
     insert into @table1 (name)  values('abc')
     insert into @table1 (name)  values('xyz')
      insert into @table1 (name) values('pqr')
       insert into @table1 (name)  values('wqe')
     delete from  @table1 output deleted.name,deleted.id where  id=3
票数 5
EN

Stack Overflow用户

发布于 2011-12-22 18:16:11

这取决于您如何进行删除。但是如果你有一个整型id列,你可以使用下面的hack:

代码语言:javascript
复制
DELETE FROM users
WHERE login = 'newtover' AND user_id = LAST_INSERT_ID(user_id);

SELECT LAST_INSERT_ID();

但您应该确保MySQL短路了前面的条件,并且不会优化为首先运行user_id = LAST_INSERT_ID(user_id)。也就是说,您可以将查询调整为类似以下内容:

代码语言:javascript
复制
DELETE FROM users
WHERE login = 'newtover' AND IFNULL(user_id, 0) = LAST_INSERT_ID(user_id);

另外,我不会问你为什么需要这个。最有可能的是,您不应该想要它=)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8583106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档