2009-06-30 21 views
8

Un colega me preguntó si, si tiene una tabla en SQL Server con solo una columna de incremento automático, ¿cómo inserta una nueva fila en esa tabla?Si tengo una tabla con solo una columna de incremento automático, ¿cómo la inserto?

INSERT INTO MyTable() VALUES() 

... no funciona.

En cuanto a por qué ... No estoy muy seguro. Pero encontré la pregunta algo convincente.

+0

Véase la pregunta [Sintaxis para la inserción en una tabla sin valores?] (http://stackoverflow.com/q/2148091/905686) – user905686

Respuesta

19
insert into mytable default values 
2

Aparentemente esto funciona:

INSERT INTO MyTable DEFAULT VALUES 

(Sólo descubrieron que después de golpeo Hacer Pregunta sentimos.!)

0
set identity_insert MyTable ON 

insert MyTable(MyIdentColumn) values(42) 

set identity_insert MyTable OFF 
+0

Enfoque interesante. Podría funcionar mejor si reemplaza 42 con algo que calcule el siguiente valor de autoincremento, como MAX (id) + 1. –

+0

al calcular el valor máximo + 1 se anularía el propósito de insertar un valor explícito en una columna de identidad. El 42 estaba allí como ejemplo: enchufaría cualquier valor que intentara insertar allí. Si solo quisiera el máximo, no usaría mi ejemplo en absoluto. –

0

Uso del IDENTITY_INSERT Marco:

SET_IDENTITY_INSERT MiTabla EN INSERT INTO MyTable (AutoIncrementColumnName, OtherColumnNames ...) VALUES (9999, OtherData ...) SET IDENTITY_INSERT MyTable OFF

Asegúrese de insertar un valor que ya no esté en la clave.

2

uso de valores por defecto, funciona también con los valores predeterminados

create table #test (id int identity, Somedate datetime default getdate()) 


insert #test default values 

select * from #test 

Identificación Somedate

1 2009-06-30 16: 04: 03,307

Cuestiones relacionadas