SQL Server identity种子
背景:
用identity修饰列可以使它自动增长
例了:
create table T(ID int not null identity(1,1),
Data nvarchar(32));
插入数据
declare @i as int =1;
while(@i<10)
begin
insert into T values(replicate(cast(@i as nchar(1)),10))
set @i = @i +1;
end
用dbcc checkident('Table_Name'); 查看表的种子值。
删除数据:
delete from T
where ID >1;
go
dbcc checkident('Table_Name');--这时种子值还是9
再次插入数据:
insert into T(Data) values('AAAA');
查看数据:
解决方法、
重设种子值:
dbcc checkident('T',reseed,2);-- 到这一步问题就已经解决了
插入数据:
insert into T(Data) values('BBB');
输出:
select * fom T;
重点:
这个种子值是 2 而表是有一个值是 10 如果一直长下去,会发生什么事呢?让我们多插入几条数据看一下
插入数据:
declare @i as int =1;
while(@i<10)
begin
insert into T values(replicate('NNN',10))
set @i = @i +1;
end
输出:
重点2、
如果ID是主键什么办。
会报错插入会失败。