例如一个表,表中有10行,每行的的主键值ID一次递增。如1,2,3,4,5,6,7,8
但当我删除第5行时候,原本会变为1,2,3,4,6,7,8,但我想实现当我删除了5之后后面的id值全部发生改变,全都减少一,变为了1,2,3,4,5,6,7 我知道只有触发器才能实现。各位大侠帮帮忙。给我代码,着急啊。。。。。。。。
我想在mysql中用触发器修改主键ID的值
答案:3 悬赏:30
解决时间 2021-12-20 17:25
- 提问者网友:雨之落き
- 2021-12-19 18:35
最佳答案
- 二级知识专家网友:情窦初殇
- 2021-12-19 19:54
use [你的数据库]
go
create trigger name
on [table] after delete
as
begin
--定义游标,使你逐个往下找个ID,并执行update修改
declare @flag int
select @flag=ID from deleted
declare [cursorname] cursor
for select ID from [table] where ID>@flag
open [cursorname]
fetch next from [cursorname]
update [table]
set ID=ID+1
where ID=fetch next from [cursorname]
WHILE @@FETCH_STATUS = 0
begin
update [table]
set ID=ID+1
where ID=fetch next from [cursorname]
close [cursorname]
DEALLOCATE authors_cursor
end
end
go
create trigger name
on [table] after delete
as
begin
--定义游标,使你逐个往下找个ID,并执行update修改
declare @flag int
select @flag=ID from deleted
declare [cursorname] cursor
for select ID from [table] where ID>@flag
open [cursorname]
fetch next from [cursorname]
update [table]
set ID=ID+1
where ID=fetch next from [cursorname]
WHILE @@FETCH_STATUS = 0
begin
update [table]
set ID=ID+1
where ID=fetch next from [cursorname]
close [cursorname]
DEALLOCATE authors_cursor
end
end
全部回答
- 1楼网友:茫然不知崩溃
- 2021-12-19 21:15
在mysql中可以把uuid作为逻辑主键,物理主键依然使用自增id 1、uuid定义 uuid含义是通用唯一识别码 (universally unique identifier),这 是一个软件建构的标准,也是被开源软件基金会 (open software foundation, osf) 的组织应用在分布式计算...
- 2楼网友:摧毁过往
- 2021-12-19 20:47
这个需求不现实啊,十条记录还好,如果实际应用中上万条数据的表,就因为删掉前面一个序号,后面的全部要更新,多浪费资源啊你想想
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯