【发布时间】:2009-08-14 23:44:46
【问题描述】:
我有一张表Orders,其中包含以下字段:
标识 |小计 |税务 |航运 |创建日期
Id 列设置为autoincrement(1,1)。
这将用于电子商务店面。有时,当前的电子商务商店迁移到我的平台并且他们已经有订单 - 这可能意味着他们当前的 Order.Id 是,例如,9586。
我想让autoincrement 字段从该值开始。
我该怎么做?
【问题讨论】:
标签: sql-server
我有一张表Orders,其中包含以下字段:
标识 |小计 |税务 |航运 |创建日期
Id 列设置为autoincrement(1,1)。
这将用于电子商务店面。有时,当前的电子商务商店迁移到我的平台并且他们已经有订单 - 这可能意味着他们当前的 Order.Id 是,例如,9586。
我想让autoincrement 字段从该值开始。
我该怎么做?
【问题讨论】:
标签: sql-server
来自Resetting SQL Server Identity Columns:
检索表Employees的标识:
DBCC checkident ('Employees')
修复身份种子(如果由于某种原因数据库插入了重复的身份):
DBCC checkident ('Employees', reseed)
将表 Employees 的标识种子更改为 1000:
DBCC checkident ('Employees', reseed, 1000)
插入的下一行将从 1001 开始。
【讨论】:
您需要将 Identity 种子设置为该值:
CREATE TABLE orders
(
id int IDENTITY(9586,1)
)
更改现有表:
ALTER TABLE orders ALTER COLUMN Id INT IDENTITY (9586, 1);
【讨论】:
另请注意,您通常不能为 IDENTITY 列设置值。但是,如果将表的 IDENTITY_INSERT 设置为 ON,则可以指定行的标识。例如:
SET IDENTITY_INSERT Orders ON
-- do inserts here
SET IDENTITY_INSERT Orders OFF
此插入会将标识重置为最后插入的值。来自MSDN:
如果插入的值大于当前标识值 表中,SQL Server 自动使用新插入的值作为 当前身份值。
【讨论】:
在 SQL Server Management Studio 的表设计器中,您可以设置自动增量的开始位置。右键单击对象资源管理器中的表并选择设计,然后转到相关列的列属性:
【讨论】: