【问题标题】:Set start value for column with autoincrement使用自动增量设置列的起始值
【发布时间】:2009-08-14 23:44:46
【问题描述】:

我有一张表Orders,其中包含以下字段:

标识 |小计 |税务 |航运 |创建日期

Id 列设置为autoincrement(1,1)。

这将用于电子商务店面。有时,当前的电子商务商店迁移到我的平台并且他们已经有订单 - 这可能意味着他们当前的 Order.Id 是,例如,9586。

我想让autoincrement 字段从该值开始。

我该怎么做?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    来自Resetting SQL Server Identity Columns:

    检索表Employees的标识:

    DBCC checkident ('Employees')
    

    修复身份种子(如果由于某种原因数据库插入了重复的身份):

    DBCC checkident ('Employees', reseed)
    

    将表 Employees 的标识种子更改为 1000:

    DBCC checkident ('Employees', reseed, 1000)
    

    插入的下一行将从 1001 开始。

    【讨论】:

      【解决方案2】:

      您需要将 Identity 种子设置为该值:

      CREATE TABLE orders
      (
       id int IDENTITY(9586,1)
      )
      

      更改现有表:

      ALTER TABLE orders ALTER COLUMN Id INT IDENTITY (9586, 1);
      

      更多信息CREATE TABLE (Transact-SQL) IDENTITY (Property)

      【讨论】:

      • 上面的 ALTER TABLE 命令在 Microsoft SQL Server 2012 中对我不起作用。它给出了这个错误:“关键字 'IDENTITY' 附近的语法不正确。”不过,接受的答案中的 DBCC 命令工作正常。
      【解决方案3】:

      另请注意,您通常不能为 IDENTITY 列设置值。但是,如果将表的 IDENTITY_INSERT 设置为 ON,则可以指定行的标识。例如:

      SET IDENTITY_INSERT Orders ON
      
      -- do inserts here
      
      SET IDENTITY_INSERT Orders OFF
      

      此插入会将标识重置为最后插入的值。来自MSDN:

      如果插入的值大于当前标识值 表中,SQL Server 自动使用新插入的值作为 当前身份值。

      【讨论】:

      • 正是我所追求的——对于填充我从 mysql php 迁移到 C# MVC 应用程序的数据库很有用
      【解决方案4】:

      在 SQL Server Management Studio 的表设计器中,您可以设置自动增量的开始位置。右键单击对象资源管理器中的表并选择设计,然后转到相关列的列属性:

      Here the autoincrement will start at 760

      【讨论】:

        猜你喜欢
        • 2012-05-16
        • 2017-05-20
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 2011-11-25
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        相关资源
        最近更新 更多