¿Cómo insertar en una tabla con una sola columna de IDENTIDAD?

84

(Se me ocurrió esta pregunta mientras intentaba responder a esta otra )

Considere la siguiente tabla de MS-SQL, llamada GroupTable:

Identificación del grupo
-------
1  
2  
3  

donde GroupID es la clave principal y es una columna de identidad.

¿Cómo inserta una nueva fila en la tabla (y por lo tanto genera una nueva ID) sin usar IDENTITY_INSERT ON?

Tenga en cuenta que esto:

INSERT INTO GroupTable() Values ()   

... no funcionará.

editar: estamos hablando de SQL 2005 o SQL 2008 aquí.

codeulike
fuente

Respuestas:

126

Esto debería funcionar:

INSERT INTO GroupTable DEFAULT VALUES 
DJ.
fuente
No puedo hacer que esto funcione con Visual Studio 2008 / SQL Express 2005. ¿Alguna idea? Mismo diseño de tabla, una columna, clave principal, identidad (1,1).
Thomas Sandberg
Estoy usando SQL 2008 R2, ¡tampoco me alegro!
TDaver
Me funciona en SQL Server 2008 Express.
Adrian Lynch
3
@RomanPekar, en SqlServer 2008 y posteriores es posible con el mergeoperador. Por ejemplomerge into TableName using (values (1), (2), (3)) s(n) on 1=0 when not matched then insert default values;
i-one
17

Aqui tienes:

INSERT INTO GroupTable DEFAULT VALUES
tofi9
fuente
3

Es posible insertar más de una fila a la vez.

Por ejemplo, para insertar 30 filas. INSERT INTO GroupTable VALORES PREDETERMINADOS GO 30

Esto insertará 30 filas incrementando la columna de identidad cada vez.

RMK
fuente
No estoy seguro sobre SQL 2008, pero en 2008R2 esto no funciona (aparece el error genérico "Sintaxis no válida cerca de 'GO'")
Elaskanator
0

¿Puedes intentar usar una secuencia o algo similar? Donde selecciona de una secuencia y le dará el siguiente valor en la secuencia.

Mike Pone
fuente
Creo que está hablando de Oracle DB
codeulike
Sé que existen secuencias en Oracle y no estaba seguro de qué cosa comparable (si es que existe) existía en SQL Server. Es por eso que le agregué el sufijo "o algo similar" y luego di una definición de una secuencia como referencia.
Mike Pone
3
SQL Server 2012 tiene SEQUENCE s.
Nick Chammas