首页 > 解决方案 > 排序后重新设置标识列

问题描述

我有一个包含以下列的表'TABLE1':

col1 varchar(10),
col2 varchar(100),
col3 int identity(1,1)

我在这个表上执行了一些操作来插入一些数据。完成后,我想在按 col1 和 col2 排序后重新分配 col3 的值。我已经尝试row_number()为此使用窗口功能,但由于以下原因,它不能满足我的目的。

该表是临时表。每天,都会从该表中删除数据。在第 1 天,假设有 10 行插入到这个表中,我需要 col3 的值从 1 到 10。在第 2 天,因为我只是截断这个表中的数据,所以 col3 中的数据从 11 到 20 开始。如果我需要在第 2 天重新设定这个值,我需要从 11 而不是从 1 开始,因此不能使用row_number().

有什么方法可以在 SQL Server 中使用带有重新种子功能的排序?或者解决这个问题的替代方法是什么?

标签: sqlsql-servertsql

解决方案


从表中删除数据后,您可以运行DBCC CHECKIDENT具有以下属性的脚本

DBCC CHECKIDENT ('[Shema].[Table]', RESEED, IdentityNumbertoStart);  

您可以在链接中阅读 Microsoft 文章DBCC CHECKIDENT


推荐阅读