与LAST_INSERT_ID()类似,MySQL中有没有一种很好的机制,可以在删除一行之后获取最后删除的ID?
发布于 2011-12-21 07:05:58
我想你说的"ID“指的是”自动递增“?
因为您可以随时删除任意行(或行集):不,没有办法知道您最近删除了哪一行(或哪几行)。
但是,您可以创建一个“触发器”来为您保存此信息:
发布于 2011-12-22 17:21:58
每次删除时都需要使用此触发器,而不是创建触发器
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发布于 2011-12-22 18:16:11
这取决于您如何进行删除。但是如果你有一个整型id列,你可以使用下面的hack:
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)。也就是说,您可以将查询调整为类似以下内容:
DELETE FROM users
WHERE login = 'newtover' AND IFNULL(user_id, 0) = LAST_INSERT_ID(user_id);另外,我不会问你为什么需要这个。最有可能的是,您不应该想要它=)
https://stackoverflow.com/questions/8583106
复制相似问题