alp*_*pav 5 sql t-sql sql-server identity sql-server-2005
我有一个表CreateDate datetime字段default(getdate())不具有任何标识列.
我想添加一个identity(1,1)字段,它将现有记录的顺序与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的对齐不能推断出任何内容......