一个简单的字段自增
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。当添加第三条数据的时候才正常自增。
结果如下:

本文来自博客园,作者:꧁༺星星的轨迹方程式༻꧂,转载请注明原文链接:https://www.cnblogs.com/SuSVIP/p/15797463.html





浙公网安备 33010602011771号