sql - 如何控制 SQL Server 中新标识列的分配顺序?

标签 sql sql-server sql-server-2005 tsql identity

我有一个带有 CreateDate datetime 字段 default(getdate()) 的表,但没有任何标识列。

我想添加 identity(1,1) 字段,该字段将反射(reflect)与 CreateDate 字段相同的现有记录顺序(order by会给出相同的结果)。我怎样才能做到这一点?

我想如果我在 CreateDate 字段上创建聚集键,然后添加标识列,它将起作用(不确定是否保证),有没有好的/更好的方法?

我对 SQL Server 2005 感兴趣,但我想 SQL Server 2008、SQL Server 2000 的答案是相同的。

最佳答案

根据 Remus 的理论回答...您需要首先根据理想的顺序生成一个列表

SELECT
    ID, CreateDate
INTO
    MyNewTable
FROM
    (
    SELECT
        CreateDate,
        ROW_NUMBER() OVER (ORDER BY CreateDate ASC) AS ID
    FROM
        MyTable
    ) foo

那么,最好的解决方案是使用SSMS将IDENTITY属性添加到MyNewTable中。 SSMS 将生成一个包含 SET IDENTITY INSERT 的脚本保留顺序

注意:IDENTITY 列只是没有隐含含义的数字,在本练习之后,不应通过它们与 CreateDate 的对齐来推断任何内容...

关于sql - 如何控制 SQL Server 中新标识列的分配顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450054/

相关文章:

sql-server - 事务隔离级别范围

sql - 从未提交读取恢复数据库事务级别的正确方法

SQL Server 2005 IsNumeric 未捕获 '0310D45'

SQL Server 2005 无法绑定(bind)多部分标识符 "x"

sql - 在关系数据库中维护表的版本副本的智能方法(编程注意事项?)

mysql - MySQL 每部电影的平均类型数

mysql - 当我选择 MAX(updated_date) 时,其他列的值错误

sql - 使用 xml.modify 将参数插入到 xml 列的特定元素中

sql - 是否使用不同子句进行排序

tsql - SQL 条件 AND 子句?