2009-05-11 21 views
68

(ocurrió esta cuestión en el curso de tratar de responder a this other one)Cómo se inserta en una tabla con una sola columna IDENTITY

Tenga en cuenta la siguiente tabla de MS-SQL, llamado GroupTable:

 
GroupID 
------- 
1 
2 
3 

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

¿Cómo insertar una nueva fila en la tabla (y, por lo tanto, generar una nueva ID) sin usando IDENTITY_INSERT ON?

Tenga en cuenta que esto:

INSERT INTO GroupTable() Values() 

... no funcionará.

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

Respuesta

106

esto debería funcionar:

INSERT INTO GroupTable DEFAULT VALUES 
+0

No puedo conseguir que esto funcione con Visual Studio 2008/SQL Express 2005. ¿Alguna idea? Mismo diseño de tabla, una columna, clave principal, identidad (1,1). –

+0

Estoy usando SQL 2008 R2, ¡tampoco me alegra! – TDaver

+0

Funciona para mí en SQL Server 2008 Express. –

0

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

+0

-1 ¿Qué es una secuencia? Nunca lo oí. – Andomar

+0

Creo que está hablando de Oracle DB – codeulike

+0

Sé que existen secuencias en Oracle y no estaba seguro de qué cosa (si existe) existía en SQL Server. Es por eso que sufijo con "o algo similar" y luego di una definición de una Secuencia para referencia. –

17

Aquí van:

INSERT INTO GroupTable DEFAULT VALUES 
+0

¿Funciona esto en SQL 2005/2008? No lo tengo delante de mí para comprobar ... – codeulike

+0

Funciona, y DJ dio la primera respuesta correcta. – Andomar

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 al incrementar la columna de identidad cada vez.

Cuestiones relacionadas