2009-08-14 25 views
38

Tengo una tabla Orders con los siguientes campos:Establecer valor inicial de la columna con incremento automático

Id | SubTotal | Tax | Shipping | DateCreated

La columna Id se establece en autoincrement(1,1).

Esto se va a utilizar en una tienda de comercio electrónico. A veces, una tienda de comercio electrónico actual se migra a mi plataforma y ya tienen pedidos, lo que podría significar que su actual Order.Id es, por ejemplo, 9586.

Quiero que el campo autoincrement comience desde ese valor.

¿Cómo puedo hacer esto?

Respuesta

70

De Resetting SQL Server Identity Columns:

Recuperando la identidad de la tabla Employees:

DBCC checkident ('Employees') 

Reparación de la semilla de identidad (si por alguna razón la base de datos es la inserción de las identidades duplicadas):

DBCC checkident ('Employees', reseed) 

Cambio de la semilla de identidad para la tabla Employees a 1000:

DBCC checkident ('Employees', reseed, 1000) 

La siguiente fila insertada comenzará en 1001.

21

Es necesario configurar la semilla de identidad a ese valor:

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

para alterar una tabla actual:

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

Más información sobre CREATE TABLE (Transact-SQL) IDENTITY (Property)

+3

El comando ALTER TABLE anterior no funciona para mí en Microsoft SQL Server 2012. Se da este error: "sintaxis incorrecta cerca de la palabra clave 'identidad'." El comando DBCC en la respuesta aceptada funcionó correctamente. –

9

También tenga en cuenta que normalmente no puede establecer un valor para una columna de IDENTIDAD. Sin embargo, puede especificar la identidad de las filas si establece IDENTITY_INSERT en ON para su tabla. Por ejemplo:

SET IDENTITY_INSERT Orders ON 

-- do inserts here 

SET IDENTITY_INSERT Orders OFF 

Este inserto restablecerá la identidad al último valor insertado. De MSDN:

If the value inserted is larger than the current identity value for the table, SQL Server automatically uses the new inserted value as the current identity value.

+0

justo lo que buscaba - fue útil para rellenar una base de datos que estaba migrando de un PHP mysql a una aplicación C# MVC – pigeon

Cuestiones relacionadas