Ayuda con Trigger de Inserción
Necesito de su ayuda para afinar un poco el trigger que estoy creando. Les cuento que este trigger lo que hace es que cuando se ingresa un registro en la tabla 1, automáticamente ingresa el mismo registro en la tabla 2 junto a otros campos. Hasta el momento todo bien. Lo probé con varios insert y funcionó perfecto. El error viene cuando ejecuto esta sentencia:
insert into [dbo].[descarga_reparaciones_cerradas] ([ps], [fecha_cierre_tecnico], [num_fact])SELECT * FROM [dbo].[COPIA_PRUEBA_DESCARGA];
La sentencia funciona excelente, pero el trigger sólo me inserta el primer registro, nada más. Se me ocurrió que podría arreglarlo con un bucle pero no tengo idea cómo hacerlo. Si pudieran ayudarme se los agradecería. Les adjunto el trigger para que le echen un vistazo:
--USE Pruebas create trigger trg_insertar ON [Pruebas].[dbo].[descarga_reparaciones_cerradas] after insert as begin --Descativa los mensajes de consola set nocount om; --Declaramos las variables a utilizar en la asignación y la insersión DECLARE @ps varchar(25) DECLARE @fecha_cierre_tecnico datetime DECLARE @num_fact varchar(25) --DECLARE @DEPENDENCIA_NUM_FACT VARCHAR(1), --DECLARE @DIA INT, --DECLARE @MES INT, --DECLARE @ANIO INT, --DECLARE @ATRASO INT --Asignamos las variables locales a los campos de la tabla SELECT @ps = ps, @fecha_cierre_tecnico = fecha_cierre_tecnico, @num_fact = num_fact from inserted;--inserted hace alusión a que se insertaran estos registros --Verificamos que el campo Num_Fact no esté vacío if((@num_fact <> null) or (@num_fact <>'')) begin insert into desc_rep_cerr_copia (ps, fecha_cierre_tecnico, num_fact, dependencia_num_fact, dia, mes, anio, atraso) values(@ps, @fecha_cierre_tecnico, @num_fact, 1, (select day(@fecha_cierre_tecnico)), (select month(@fecha_cierre_tecnico)), (select year(@fecha_cierre_tecnico)), (select datediff(dat,getDate(), @fecha_cierre_tecnico))); end else begin insert into desc_rep_cerr_copia (ps, fecha_cierre_tecnico, num_fact, dependencia_num_fact, dia, mes, anio, atraso) values(@ps, @fecha_cierre_tecnico, @num_fact, 0, (select day(@fecha_cierre_tecnico)), (select month(@fecha_cierre_tecnico)), (select year(@fecha_cierre_tecnico)), (select datediff(dat,getDate(), @fecha_cierre_tecnico))); end end
Cualquier aporte o crítica será bienvenida.
1 Respuesta
Respuesta de william4425 Mendez
1