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是主键什么办。

        会报错插入会失败。

        

 

 

 

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值