怎么让自增量(种子)字段,当删除记录时,之后的种子值都自动减1.先谢谢了!

zhangqy 2003-10-16 09:23:20
怎么让自增量(种子)字段,当删除记录时,之后的种子值都自动减1.
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aierong 2003-10-16
  • 打赏
  • 举报
回复


好详细
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
上面的触发器会对表中的所有数据进行整理,因此在数据量大是,速度会受影响,为解决此问题,可以改成下面的.

--创建触发器,在删除表中的记录时,自动更新记录的id
create trigger t_delete on tb
AFTER delete
as
declare @id int,@mid int
select @mid=min(id),@id=@mid-1 from deleted
update tb set id=@id,@id=@id+1 where id>@mid
go
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
--创建得到最大id的函数:f_getid()
可以实现类似标识列的作用,插入记录时自动生成id的值.


--创建触发器,在删除表中的记录时,自动更新记录的id
create trigger t_delete on tb
可以实现在删除后,自动对标识列进行重新整理.
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
--例子:

--创建得到最大id的函数
create function f_getid()
returns int
as
begin
declare @id int
select @id=max(id) from tb
set @id=isnull(@id,0)+1
return(@id)
end
go

--创建表
create table tb(id int default dbo.f_getid(),name varchar(10))
go

--创建触发器,在删除表中的记录时,自动更新记录的id
create trigger t_delete on tb
AFTER delete
as
declare @id int
set @id=0
update tb set id=@id,@id=@id+1
go

--插入记录测试
insert into tb(name) values('张三')
insert into tb(name) values('张四')
insert into tb(name) values('张五')
insert into tb(name) values('张六')
insert into tb(name) values('张七')
insert into tb(name) values('张八')
insert into tb(name) values('张九')
insert into tb(name) values('张十')

--显示插入的结果
select * from tb

--删除部分记录
delete from tb where name in('张五','张七','张八','张十')

--显示删除后的结果
select * from tb

--删除环境
drop table tb
drop function f_getid
txlicenhe 2003-10-16
  • 打赏
  • 举报
回复
create trigger 名 on tableName
For Delete
As
update tableName set id = id - (select count(*) from deleted)
where id >= (select top 1 id from deleted)
zhangqy 2003-10-16
  • 打赏
  • 举报
回复
小弟不才
能不能帮我写个触发器
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
自增字段不可能做到.

改用整形字段,用触发器自己实现就可以.
tonyzhengjq 2003-10-16
  • 打赏
  • 举报
回复
有道理
txlicenhe 2003-10-16
  • 打赏
  • 举报
回复
用自增字段是不可能做到这样的。
如果一定要这种效果,就不能用自增字段,只用整型字段,不自增,用触发器实现即可。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧