当前位置: 首页 > 知识库问答 >
问题:

SQL Server标识列重新编号[重复]

松英喆
2023-03-14

我有一个表,它有一个主键ID列,并设置为每个新条目的增量为1,这是一个相当标准的配置。此表定期更新新记录,每月归档一次到存档表,然后截断。

我的问题不是关于重新播种列(使用DBCC--我知道如何这样做),而是关于如何使用新的ID值重新对现有记录进行编号。我应该使用循环的动态SQL查询(删除记录、插入记录)来执行此操作吗?还是有一些我不知道的SQL Server函数可以自动重新编号ID列?

共有1个答案

宇文修筠
2023-03-14

这似乎是这个问题的重复-如何更新SQL Server中的标识列?

在there上的对话的结果是这样做是可能的,但不可取--特别是如果有任何其他表在外键等中引用了这个标识符值,最好循环遍历并使用游标或类似的方法重新创建记录,正如您在问题中提到的。

 类似资料:
  • 如何更改身份栏? 例如,我有一张表: 我需要随着时间的推移而改变

  • 问题内容: 如何重置sql表上的主键计数器并用新的主键更新每一行? 问题答案: 我将首先在表中添加另一列,并使用新的PK填充该列。 然后,我将使用update语句来更新所有相关表中的新fk字段。 然后,您可以删除旧的PK和旧的fk字段。 编辑: 是的,正如伊恩所说,您将必须删除然后重新创建所有外键约束。

  • 我有一个SQL Server表,它有一个标识列(

  • 大家好。我用ApachePOI3.7创建了一个spreadshhet。电子表格的前两行显示标题信息。然后从第3行开始,返回的数据填充到电子表格中。我的问题是,有一种方法可以从第3行开始对行进行编号。例如,我希望spreadshhet的第三行声明“1”而不是“3”。 1处理日期:2013年7月30日13:39

  • 问题内容: 我有一个简单的MySQL表,并且主索引(id)并未一一编号(1、31、35、100等)。我希望它们被编号为(1、2、3、4)。请告诉我该怎么做。我还要指出,我知道该操作可能造成的后果,但我只是想整理一下桌子。 问题答案: 我同意其他方法也可以,但是我只是给出了一个不同的想法。这将不需要任何临时表创建要求:

  • 原始关闭原因未解决 当我读取CSV / Excel文件时,日期时间列具有“对象”类型。如果它是唯一的一个,很容易识别它,但是我得到了几个不包含时间的对象类型列 - 字符串。 我正在寻找一种方法来识别时间列,而不知道它的名称或位置。目前我所能做的就是这样: csv文件示例: