Realizar TRIGGER con bucle interno

Estoy realizando un TRIGGER que va a insertar registros en una tabla con el código del último registro insertado en la tabla1 que lanza el trigger.
Hasta aquí fácil, el problema viene porque necesito insertar tantos registros como elementos encuentre en otra tabla2, además de necesitar el ID de esta tabla para insertarlos también en cada registro.
He pensado que necesitaría un bucle para recorrer la tabla2, sacar el id por cada pasada y así hacer el insert en la tabla de destino con el id de la tabla1 y el id de la tabla2.
Adjunto lo que tengo del trigger por si os sirve como referencia o para aclaraos.
ALTER TRIGGER [ProcesosPerfiles]
ON [dbo].[Procesos]
AFTER INSERT
      AS
begin
      DECLARE @IDProceso INT, @IDPerfil INT
      SELECT @IDProceso=MAX(IdProceso) FROM dbo.Procesos
      SELECT @IDPerfil=IdPerfil FROM dbo.Perfiles ORDER BY IdPerfil DESC
/*AQUI DEBERIA EMPEZAR EL BUCLE*/
/*LA XX ES DONDE TENGO QUE PONER EL ID QUE RECOJO EN LA TABLA Perfiles*/
      INSERT INTO dbo.PerfilProceso (IdPerfil, IdProceso) VALUES (XX, @IDProceso)
END

1 respuesta

Respuesta
1
No estoy muy afinado con los triggers por lo que no se si se puede hacer dentro del trigger pero siempre que se pueda resolver algo con sql es la primer opción.
Intenta hacer INSERT INTO  ... y en lugar de VALUES usá: Select xx, @idproceso from perfiles.
¿Pero esto me va a insertar tantos resultados como registros me devuelva el SELECT o solo me va a insertar el primero?
Lo probaré y te digo algo con el resultado.
Un saludo y gracias.
el Insert select inserta tantas filas como las que seleccionó.
Perfecto, efectivamente con la respuesta del select inserto todos los resultados que me convienen en el insert con las variables deseadas.
Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas