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
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 de panzaverde
1