SQL排序自动增删排序

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:32:12
有一个表如下 name number
aa 第一位
cc 第二位
dd 第三位
EE 第四位
当删除任一行数据,会得到以下的表
aa 第一位
dd 第二位
EE 第四位
当增加一行数据时,会得以下的表
aa 第一位
cc 第二位
dd 第三位
EE 第四位
FF 第五位
用SQL实现以下工作
当你删除CC这一行数据时,dd 的number字段会变第二位,当你增加一行数据,number字段自动增加为一位。NUMBER字段显示1,2,3,4,也可以,最好能显示字符“第一位”,“第二位”,“第三位”。这样将加奖励分。

create table table1
(
name varchar(100),
number integer
)

//插入触发器
CREATE TRIGGER [trigger_table1_insert] ON [dbo].[table1]
instead of INSERT
AS
declare @i integer
declare @name varchar(100)
DECLARE name_Cursor CURSOR FOR
SELECT name FROM inserted
OPEN name_Cursor
FETCH NEXT FROM name_Cursor into @name
WHILE @@FETCH_STATUS = 0
BEGIN
select @i=max(number) from table1
set @i = isnull(@i,0) + 1
insert into table1 values(@name,@i)
FETCH NEXT FROM name_Cursor into @name
END
CLOSE name_Cursor
DEALLOCATE name_Cursor

GO
//删除触发器
CREATE TRIGGER [trigger_table1_delete] ON [dbo].[table1]
instead of delete
AS
declare @i integer
DECLARE number_Cursor CURSOR FOR
SELECT number FROM deleted
OPEN number_Cursor
FETCH NEXT FROM number_Cursor into @i
WHILE @@FETCH_STATUS = 0
BEGIN
delete table1 wher