用触发器实现自动增加序号的问题!

zhang2544669 2003-10-20 03:51:03
由于表中数据在删除记录后要进行序号的维护,所以没用identity
现想用insert触发器来实现id的自动增加,如下:
declare @id smallint
select @id=max(userid) from Tab_User
set @id=@id + 1
update Tab_User
set userid=@id where userid=NULL
可结果每条记录的userid都改变了,该怎么做阿?
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang2544669 2003-10-20
  • 打赏
  • 举报
回复
结贴
yujohny 2003-10-20
  • 打赏
  • 举报
回复
declare @id smallint
select @id=max(userid) from Tab_User
set @id=@id + 1
update Tab_User
set userid=@id where userid is NULL
zhang2544669 2003-10-20
  • 打赏
  • 举报
回复
结果不是每条记录的userid都改变了,而是userid列为NULL.
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
不用触发器。
create function getDH()
returns char(10)
As
begin
declare @dh1 smallint
select @dh1 = max(dh) from tableName
set @dh1 = IsNull(@dh1,0) + 1
return(@dh1)
end

/********
Usage: select dbo.getdh()
*******/


2:在默认值中填入 dbo.getdh()
sdhdy 2003-10-20
  • 打赏
  • 举报
回复
set nocount on
declare @id smallint
select @id=max(userid) from Tab_User
set @id=@id + 1
update Tab_User set userid=@id from inserted where Tab_User.userid=inserted.userid

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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