一个简单的字段自增

1.建表

create table idtest(
id int,
name varchar(50),
test_id int
)

2.触发器

create trigger idtigger   --id自增触发器
on idtest 
for insert 
as
   declare @n int,@c int,@r int
   select @n = inserted.id from inserted; --inserted:插入前的虚拟表
   select @c = count(id) from idtest ;

   if(@c=1)
     set  @r=10000;
   else
     begin
       select @r = max(id) from idtest;
       set @r= @r+1;
     end
     update idtest set ID=@r where ID=@n;

--测试
insert into idtest values(1,'XX编码',1);
insert into idtest values(1,'XX编码',2);
insert into idtest values(1,'XX编码',3);
insert into idtest values(1,'XX编码',4);

3.测试

  • insert into idtest values(1,'XX编码',1);
  • insert into idtest values(1,'XX编码',2);
  • 多条数据也可以自增

4.存在的问题
set @r=1 时只能从2开始自增。
* set @r=10000; 改为 set @r=1;后不会从1开始自增
* 因为这时候第一条和第二条的@n都为1,update后两条的id都变为了2。当添加第三条数据的时候才正常自增。
结果如下:

posted @ 2022-01-13 14:21  ꧁༺星星的轨迹方程式༻꧂  阅读(39)  评论(0)    收藏  举报