I tiene una tabla con una sola columna, que es una identidad generada automáticamente-Insertar varias filas de valores por defecto en una tabla
create table SingleIdTable (
id int identity(1,1) not null
)
I pueden insertar de una sola fila con un id generada automáticamente con:
insert into SingleIdTable default values
quiero insertar el número de filas y el uso de la sintaxis de salida para obtener sus documentos de identidad, algo así como:
insert into SingleIdTable
output inserted.Id into @TableOfIds
select (default values) from SomeOtherTable where Attribute is null
Wher e la intención es insertar una fila en SingleIdTable
para cada fila en SomeOtherTable
donde Attribute
es nulo usando una identificación generada automáticamente. Lo anterior no funciona, pero ¿cómo podría hacerlo? Observo que si mi mesa tuviera más de una sola columna podría hacerlo, pero no puedo seleccionar filas vacías, que es lo que realmente quiero hacer.
No puedo cambiar la definición de SomeOtherTable
.
+1 Nunca pensé en MERGE – RichardTheKiwi
Astucia ... La tabla es un artefacto de alguien que aplica mal NHibernate al mapear un grupo. Aceptaré esto, pero ahora me doy cuenta de que podría hacerlo correlacionando la consulta interna con el inserto para poder 'output insert.id, SomeOtherTable.id)'. es posible? Realmente necesito unir mi bolsa de identificadores generados cada uno con un elemento de 'SomeOtherTable' donde 'Attribute' es nulo. ¿Alguna idea? – silasdavis
@silasdavis - Sí, solo use 'OUTPUT INSERTED.id, T.id' –