【问题标题】:Change IDENTITY column [duplicate]更改 IDENTITY 列 [重复]
【发布时间】:2019-01-07 19:03:11
【问题描述】:

如何更改标识列?

例如我有表:

CREATE TABLE orders
(
 id int IDENTITY(100,1)
 Name varchar(250) 
)

我需要改变为

CREATE TABLE orders
    (
     id int IDENTITY(1000,1)
     Name varchar(250) 
    )

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    基本上你想改变你的身份列的种子。您可以按如下方式使用 dbcc 命令

    DBCC CHECKIDENT('orders' , RESEED , 1000)
    

    【讨论】:

    • 正确答案,注意它只更新下一个种子值。它不会更改表定义,也不会更新现有行(如果需要)。
    • 是的,我需要更新现有行。怎么做?
    【解决方案2】:

    如果你想更新现有的列,你可以这样做

    注意:您的开关表必须与您的订单表完全相同。相同的列等并以相同的顺序。

    CREATE TABLE orders_switch
        (
    
         Name varchar(250) ,
         id int IDENTITY(1000,1)
        )
    
    
        insert into orders_switch
        select [Name] from orders
    
    
    
    truncate table dbo.orders   alter table [dbo].[orders_switch]      switch to   [dbo].[orders] 
    
    declare @max int 
    set @max = (select MAX(id) +1 from dbo.orders)
    DBCC CHECKIDENT('orders' , RESEED , @max )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-29
      • 2015-05-31
      • 2014-06-07
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多