表A有如下信息:ID NAME PAGEFILE
1 A AA
2 A AAA
3 A AAAA
4 A AAAAA
1 B BB
2 B BBB
3 B BBBB
4 B BBBBBID和NAME是联合主键。这个ID不是自增长的类型,是数据插入是,人为给自动按顺序编号。现在的问题是,比如我把第2条数据删除了,我希望表中的数据变成
ID NAME PAGEFILE
1 A AA
2 A AAAA
3 A AAAAA
1 B BB
2 B BBB
3 B BBBB
4 B BBBBB
这个样子的。说白了,就是重新排上序号,但不允许使用临时表来实现。请高手指教。
1 A AA
2 A AAA
3 A AAAA
4 A AAAAA
1 B BB
2 B BBB
3 B BBBB
4 B BBBBBID和NAME是联合主键。这个ID不是自增长的类型,是数据插入是,人为给自动按顺序编号。现在的问题是,比如我把第2条数据删除了,我希望表中的数据变成
ID NAME PAGEFILE
1 A AA
2 A AAAA
3 A AAAAA
1 B BB
2 B BBB
3 B BBBB
4 B BBBBB
这个样子的。说白了,就是重新排上序号,但不允许使用临时表来实现。请高手指教。
update tb set id=@num-1 where id>@num
--以此类推
delete from 表A where ID=2 and name='A'
update 表A set ID=ID-1 where name='A' and ID>2
的确,这个字段没有索引,ID的最大值是10
2:没有任何特殊的含义
的确,没有任何特殊意义,看这个字段的面相就知道了
3:估计只是为了方便页面显示
的确,是为了显示方便,前台是applet作图,想改前台,我这一个礼拜就啥都不用干了。
要是不重新排序的话,页面的图就串位置了。总结,这个列还得要啊
给你个思路
CREATE TRIGGER tri_name ON table_name
FOR delete
as
update a set id = id-1 from table_name as t inner join updated as u
on t.id > u.id and t.name=u.name
GO
FOR delete
as
update a set id = id-1 from table_name as t inner join deleted as d
on t.id > d.id and t.name=d.name
GO
这样才是删除
比如删
1 3
第二条减一次 第四条会减两次吧也符合最后变成 1 2