我有一个名为Orders
的表,其包含以下字段:
Id | SubTotal | Tax | Shipping | DateCreated
Id
列设置为autoincrement(1,1)
。
该表将用于电子商务门户。有时,当前的电子商务商店会迁移到我的平台,并且他们已经有了订单 - 这可能意味着他们当前的Order.Id
为9586
。
我希望将autoincrement
字段从该值开始递增。
我该如何实现这一点?
我有一个名为Orders
的表,其包含以下字段:
Id | SubTotal | Tax | Shipping | DateCreated
Id
列设置为autoincrement(1,1)
。
该表将用于电子商务门户。有时,当前的电子商务商店会迁移到我的平台,并且他们已经有了订单 - 这可能意味着他们当前的Order.Id
为9586
。
我希望将autoincrement
字段从该值开始递增。
我该如何实现这一点?
以下内容翻译自《重置SQL Server标识列》:
获取表Employees
的标识列:
DBCC checkident ('Employees')
修复标识种子(如果数据库正在插入重复的标识):
DBCC checkident ('Employees', reseed)
将表格Employees
的标识种子更改为1000:
DBCC checkident ('Employees', reseed, 1000)
下一行插入的位置将从1001开始。你需要将标识种子设置为该值:
CREATE TABLE orders
(
id int IDENTITY(9586,1)
)
修改现有表:
ALTER TABLE orders ALTER COLUMN Id INT IDENTITY (9586, 1);
请注意,通常情况下您无法为自增列(IDENTITY column)设置值。但是,如果您为表设置IDENTITY_INSERT为ON,您可以指定行的自增标识。例如:
SET IDENTITY_INSERT Orders ON
-- do inserts here
SET IDENTITY_INSERT Orders OFF
这个插入语句将重置标识列为最后一个插入的值。来自MSDN:
如果插入的值大于表的当前标识列值,SQL Server会自动使用新插入的值作为当前标识列值。