SQL中自动增量的问题

时间:2011-03-29 19:45:25

标签: sql

假设我有一个这样的表

ID Name
1  RJ
2  Hello
3  NV 
4  Dere 
5  What

所以当我使用这个Sql语句从数据库中删除第四个条目(ID = 4和Name = dere)时

Delete from Table where ID="4"

然后删除表格行,但当我看到表格时,它看起来像

ID Name
1  RJ
2  Hello
3  NV 
5  What

那么有没有什么方法可以自动更新自动增量ID,就像我希望表格看起来像我删除表格第四个条目一样

ID Name
1  RJ
2  Hello
3  NV 
4  What

希望你能知道我的问题.. !!

5 个答案:

答案 0 :(得分:4)

这不是IDENTITY / autonumber列的用途。

如果您需要动态列号(基于什么顺序?),请使用动态的内容,而不是普通的旧数据列。

例如,您可以删除该ID列并在CreationDate上添加一个datetime列,默认为GETDATE()

SELECT *
    ,ROW_NUMBER() OVER (ORDER BY CreationDate) AS ID
FROM tbl

答案 1 :(得分:4)

没有。这将涉及更新可能数十万条记录。您的代码不应要求密钥是连续的。你永远不应该假设钥匙。

答案 2 :(得分:1)

声明@id int
设置@id = 4
从表中删除ID = @ id

更新表
设置ID = ID - 1
WHERE ID> @ID

但不要这样做

答案 3 :(得分:1)

原谅这一点,但为什么呢?这只是一个数字,未来你可能会有其他表格通过ID引用这个表格。这就是DB最擅长的。不要担心编号。

答案 4 :(得分:0)

它是Identity的常见sql行为。