假设我有一个这样的表
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
希望你能知道我的问题.. !!
答案 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行为。