我的主键是ID,为自动编号我删除一行后就有ID号是空的,如有ID:1,2,3,4
我删了ID为3 的行后,如何使以后添加进来的行的ID自动取3的值(也就是空的值)而不是又在后面自动增加,谢谢~!

解决方案 »

  1.   

    --不連續其實沒影響
    DECLARE @T TABLE(ID INT IDENTITY,[NAME] VARCHAR(10))
    INSERT @T SELECT 'A'
    INSERT @T SELECT 'B'
    DELETE @T WHERE ID=2
    INSERT @T SELECT 'C'
    INSERT @T SELECT 'D'
    SELECT * FROM @T
    SELECT ID=(SELECT COUNT(*) FROM @T WHERE ID<=T.ID),[NAME] FROM @T T
    /*ID          NAME       
    ----------- ---------- 
    1           A
    3           C
    4           D(影響 3 個資料列)ID          NAME       
    ----------- ---------- 
    1           A
    2           C
    3           D
    */
      

  2.   

    自动编号的ID 是不插进去的。楼主为什么不取消自动编号呢。用MAX就OK了。
      

  3.   

    如果实在要加,可以这样SET IDENTITY_INSERT TB ONINSERT TB(ID,COL1,...) VALUES(3,VALUE1,...)SET IDENTITY_INSERT TB OFF
      

  4.   

    楼主可以看看这个帖子。在这里已经把问题都解决了http://topic.csdn.net/u/20080703/22/4ca2df0f-325e-4fbb-b0a6-aa7ca7cacca0.html