做一个temp表把删除数据的ID记录进去在下一次插入的时候先检查,这张temp表里是不是有记录如果有记录,提取出ID来再插入目的表中这样就可以补足空缺了
解决方案 »
- 对于2005 reporter server的一点基本问题
- 数据表设计问题,一个电表一天96个数据,有200-300个电表,是横着搞96列好呀,还是坚着做一列好呢?
- opendatasource问题
- 请问如何在sqlserver里建立一个job?
- 关于修改表后保存的问题
- 求一条有关时间的sql语句
- 怎样写查询语句?有一个表中有近20个字段存储的是代码值,但是在DBGridEH中显示时需要将这些字段显示为其名称,而这20个字段的代码和名称值分别放在20个表中,并且这些字段在DBGridEh中显示的位置是不固定的
- 关于字段类型的问题
- 无法启动分布式事务
- sql语句提示=号附近有错,请大神帮忙
- 如何自动清空日志?
- SQLSERVER2000的安装问题
create function f_getid()
returns char(5)
as
begin
return((select right(100001+isnull(max(id),0),5) from tb))
end
go--创建表
create table tb(id char(5) default dbo.f_getid() primary key,name varchar(10))
go--创建触发器,在删除表中的记录时,自动更新记录的id(**如果不要此功能,则删除此触发器)
create trigger t_delete on tb
AFTER delete
as
declare @id int,@mid int
select @mid=min(id),@id=99999+@mid from deleted
update tb set id=right(@id,5),@id=@id+1 where id>@mid
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/*--测试结果
id name
----- ----------
00001 张三
00002 张四
00003 张五
00004 张六
00005 张七
00006 张八
00007 张九
00008 张十(所影响的行数为 8 行)
id name
----- ----------
00001 张三
00002 张四
00003 张六
00004 张九(所影响的行数为 4 行)
--*/