2011-11-03 29 views
6

Estoy usando SQL Server 2008 Express Edition.SQL Server 2008 Express Edition: cómo crear una secuencia

yo quiero crear una secuencia con este código:

CREATE SEQUENCE Postoffice_seq 
    AS bigint 
    START WITH 1 
    INCREMENT BY 1 
    MINVALUE 0 
    NO MAXVALUE; 

y el error es

Msg 343, nivel 15, estado 1, línea 1
Desconocido objeto de tipo 'secuencia' utilizado en una instrucción CREATE, DROP o ALTER.

¿Alguien me puede ayudar?

¡Atentamente!

Respuesta

9

SQL Server 2008 aún no conoce las secuencias, que se presentarán en SQL Server 2012 (f.k.a. "Denali").

Para más o menos el mismo resultado, utilice una columna INT IDENTITY lugar:

CREATE TABLE dbo.YourTable 
    (YourID INT IDENTITY(1,1) NOT NULL PRIMARY KEY, 
    .... 
) 

La columna IDENTITY se llena automáticamente por SQL Server en el momento de insertar una nueva fila en la tabla. SQL Server se asegura de que sea monótonamente creciente, comenzando en 1, aumentando en 1 (puede establecerlos en diferentes valores, si es necesario).

Básicamente, al insertar una fila en dicha tabla, debe no especificar la columna IDENTIDAD en su lista de columnas para insertar valores en SQL Server hará esto automáticamente.

0

Los objetos de secuencia son nuevos con SQL Denali, SQL Server 2012 aquí tienes códigos de muestra http://www.kodyaz.com/sql-server-2012/number-of-sequences-in-sql-server-2012-using-sequence-objects.aspx para la secuencia de objetos en SQL 2012

se puede encontrar una implementación de dichas mejoras tabla de secuencia para SQL Server 2008 aquí: http://www.kodyaz.com/t-sql/sql-server-instead-of-trigger-with-sequence-table.aspx

+0

I recuerda haber podido hacer esto en postgresql ... y me encantó. ¡Muy feliz de haber sido agregado a SQL 2012! –

Cuestiones relacionadas