我在SQL Server中有一个大问题。在我的一张表中,我有一个自动编号列。删除某些行后,此列中的编号会变得混乱。我想使用存储过程对其重新编号。我该怎么办?
答案 0 :(得分:2)
这个评论太长了。
identity
列唯一地标识表中的每一行。这就是它的目的。通常,这些也是表中的主键。它们用于外键引用。
创建值后,您不想更改它们。换句话说,您希望每个行的标识符在整个数据库中是一致的,并且在时间上是一致的。您不希望“ 27”在今天表示一件事,在下个月表示不同。
如果您想要某种无间隔的序号,则在查询表时使用row_number()
。这将“填补”空白,尽管分配给给定行的特定数字可能会随时间变化。