请教删除表中某些记录后,现有编号重新从1开始排序的触发器怎么写?

jamesgu2008 2007-01-09 02:44:37
因为数据库有些记录不需要了,要删掉,这样编号就断了,比如从1,2,3,4,6,删除编号为3和4的记录后,编号变为1,2,6,我想让现有数据从新排序,让编号变为1,2,3,再增加记录时,编号从4开始,该怎么写呢,请大家帮看一下。谢谢!
...全文
353 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwh999 2007-01-09
  • 打赏
  • 举报
回复
上面的朋友抢分挺专注的...好久没上来,多了许多抢分能人啊...

依上面的操作:放在触发器里面改表结构...性能是非常低的,不太实用,不要教坏LZ了。
xluzhong 2007-01-09
  • 打赏
  • 举报
回复

--因为数据库有些记录不需要了,要删掉,这样编号就断了,比如从1,2,3,4,6,删除编号为3和4的记录后,编号变为1,2,6,我想让现有数据从新排序,
--让编号变为1,2,3,再增加记录时,编号从4开始,该怎么写呢,请大家帮看一下。谢谢!
Create table test(id int identity(1,1),price int)
Insert into test
select 1 union
select 2 union
select 3 union
select 4 union
select 5 union
select 6
go

create trigger t
on test
for delete
as
Alter table test drop column id

ALTER TABLE test ADD id int identity(1,1)
go
delete test where id = 3

Select * from test
go
Drop table test
go
xluzhong 2007-01-09
  • 打赏
  • 举报
回复

--因为数据库有些记录不需要了,要删掉,这样编号就断了,比如从1,2,3,4,6,删除编号为3和4的记录后,编号变为1,2,6,我想让现有数据从新排序,
--让编号变为1,2,3,再增加记录时,编号从4开始,该怎么写呢,请大家帮看一下。谢谢!
Create table test(id int identity(1,1),price int)
Insert into test
select 1 union
select 2 union
select 3 union
select 4 union
select 5 union
select 6
go
Select * from test
go
delete test where id in (3,4)
go
Select * from test
go
Alter table test drop column id
go
ALTER TABLE test ADD id int identity(1,1)
go
Select * from test
go
Drop table test
go
fish_yht 2007-01-09
  • 打赏
  • 举报
回复
同意上面的
mengmou 2007-01-09
  • 打赏
  • 举报
回复
同上
wwh999 2007-01-09
  • 打赏
  • 举报
回复
最简单的办法,新增一个IT IDENTITY(1,1)列,==>其会自应在当前的排序情况下生成序列数字.
然后,删除原先的列。


具体的语句使用Alter Table,很简单的,Lz可自行尝试。
rookie_one 2007-01-09
  • 打赏
  • 举报
回复
先增加一列新的自增列:
ALTER TABLE 表 ADD 列名 int IDENTITY(1,1)


再把原来的列删除:

ALTER TABLE 表 DROP COLUMN 原列名
caixia615 2007-01-09
  • 打赏
  • 举报
回复
建议LZ定义表时把编号定义成int identity(1,1) 数据类型那样就可以了..

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧