如果有
id info
1 sfa
2 adsf
3 dfds
4 fwef
如果删除了某一条,从它开始,下面的id全部减一,保持连续性
有哪些方法呢,通常的做法是什么呢
这个问题第1个回答:
关键要看你的id是不是Identity标识列
这个问题第2个回答:
搞一个delete触发器就是了
这个问题第3个回答:
SQL code
if object_id('test')is not null drop table test
go
create table test (id int, info varchar(10))
insert test select 1, 'sfa'
insert test select 2, 'adsf'
insert test select 3, 'dfds'
insert test select 4, 'fwef'
if object_id('Trigger_test')is not null drop trigger Trigger_test
go
create trigger Trigger_test on test
for delete
as
declare @Max int
select @max=d.id from deleted d
update test set id=id-1 where id>@max
go
delete test where id=2
select * from test
/*
id info
----------- ----------
1 sfa
2 dfds
3 fwef
*/
这个问题第4个回答:
...........不懂
只试过用编程操作SQL语句执行,类似
SqlConnection conn=......
String text=" ".......
conn.execute(text)....
大概这样吧,忘记了.数据库只知道基本的SQL
上面两位说的方法是可以直接在数据库中一步完成的操作吗
这个问题第5个回答:
楼主朋友,你表中的id列是自增列还是普通的列,如果是自增列的话,那么用过度表做比较简单,但是不能用触发器;如果是普通的列,那么就可以用触发器来做.不管哪种方法,一步就可以完成且时间只与表记录的数量成正比关系.请楼主再明确一下问题,好给出解决方法.
这个问题第6个回答:
conn.execute("UPDATE tb SET id=id-1 WHERE id>"& DeleteId)
楼主可以想简单点撒.呵呵.
这个问题第7个回答:
SQL code
CREATE TABLE [tb11] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[a] [char](10)
)
GO
insert into tb11(a) values('1')
insert into tb11(a) values('aa')
insert into tb11(a) values('bb')
select * from tb11
--结果
id a
1 1
2 aa
3 bb
------------------------
delete from tb11 where id=2
select * from tb11
--结果
id a
1 1
3 bb
select a into #a from tb11
drop table tb11
go
create table tb11(id int IDENTITY (1, 1) NOT NULL ,a char(10))
insert into tb11
select a from #a
select * from tb11
--结果
id a
1 1
2 bb
这样又是何苦?