求助,删除一条记录,其余记录号自动排列。
有如下记录:
1 孙 男 英语 数学...
2 王 男 英语 数学...
3 李 女 语文 历史...
4 张 女 英语 语文
假如删除第二条记录,要求剩下的记录排列如下:
1 孙 男 英语 数学...
2 李 女 语文 历史...
3 张 女 英语 语文...
记录的序号自动更新为顺序。
求助,如何在vc或者更改数据库属性实现以上的要求,谢谢高手指点!!!!!!!!
问题点数:100、回复次数:7Top
1 楼liuqd(德)回复于 2005-12-26 19:19:24 得分 0
编写删除的存储过程Top
2 楼lxzm1001(*~悠悠蓝星梦~*)回复于 2005-12-26 19:20:29 得分 10
select id=(select count(*) from tablename where id<=t.id),* from tablename t
delete tablename where id=2
select id=(select count(*) from tablename where id<=t.id),* from tablename tTop
3 楼dutguoyi(新鲜鱼排)回复于 2005-12-26 19:21:53 得分 20
create Table table1(id int,name varchar(10))
insert table1
select 1,'Sun'
union all select 2,'Li'
union all select 4,'zhang'
select * from table1
update table1 set id=
(
select count(1) from table1 t2
where t2.id<=table1.id
)
select * from table1
drop table table
(3 row(s) affected)
/*
id name
----------- ----------
1 Sun
2 Li
4 zhang
(3 row(s) affected)
(3 row(s) affected)
id name
----------- ----------
1 Sun
2 Li
3 zhang
(3 row(s) affected)1
*/Top
4 楼hpym365(君子爱财,取之有道.)回复于 2005-12-26 19:40:29 得分 30
update table1 set id=
(
select count(1) from table1 t2
where t2.id<table1.id
)+1Top
5 楼rivery(river)回复于 2005-12-26 20:15:51 得分 20
--测试表及数据
declare @t table(id int,xb char(2),xm varchar(20),kemu varchar(20))
insert into @t
select 1,'孙','男','英语' union
select 2,'王','男','英语' union
select 3,'李','女','语文' union
select 4,'张','女','英语'
declare @del_id int
select @del_id=2
--删除 实际处理中请放在一个事务中。
delete from @t where id=@del_id
--变更序号
declare @i int
select @del_id=@del_id-1
update @t
set @del_id=@del_id+1,
id=@del_id
where id>@del_id
--查看结果
select * from @t
/*
1 孙 男 英语
2 李 女 语文
3 张 女 英语
*/Top
6 楼rivery(river)回复于 2005-12-26 20:16:25 得分 10
--测试表及数据
declare @t table(id int,xb char(2),xm varchar(20),kemu varchar(20))
insert into @t
select 1,'孙','男','英语' union
select 2,'王','男','英语' union
select 3,'李','女','语文' union
select 4,'张','女','英语'
declare @del_id int
select @del_id=2
--删除 实际处理中请放在一个事务中。
delete from @t where id=@del_id
--变更序号
select @del_id=@del_id-1
update @t
set @del_id=@del_id+1,
id=@del_id
where id>@del_id
--查看结果
select * from @t
/*
1 孙 男 英语
2 李 女 语文
3 张 女 英语
*/
Top
7 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2005-12-26 23:10:48 得分 10
create trigger t_updateid on tablename
for deleted
as
update a set a.id=a.id-1 where id>d.id from tablename a,deleted d
goTop




