FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Ayuda con Stored Procedure
Hola a tod@s :
Tengo un stored procedure que actualiza un campo en varias tablas al hacer una actualización en la tabla CMPNAS. Se dispara cuando se actualiza cualquier dato de la tabla pero ahora me he dado cuenta que lo que necesito es que se dispare solo cuando se modifica el campo "Activo". ¿Alguien puede indicarme como puedo hacerlo? En stored procedure es el siguiente : Código:
CREATE TRIGGER Actualiza_Estado_Cmpnas ON CMPNAS FOR UPDATE AS declare @CDGOCMPNATEMP integer, @ACTIVOTEMP integer begin SELECT @CDGOCMPNATEMP = CDGO, @ACTIVOTEMP = ACTIVA FROM INSERTED UPDATE CMPNASLIN SET ACTIVO = @ACTIVOTEMP WHERE CDGOCMPNA = @CDGOCMPNATEMP UPDATE CMPNASLINSUP SET ACTIVO = @ACTIVOTEMP WHERE CDGOCMPNA = @CDGOCMPNATEMP UPDATE FCTRASCAB SET ACTIVA = @ACTIVOTEMP WHERE CDGOCMPNA = @CDGOCMPNATEMP end Saludos y gracias. |
#2
|
||||
|
||||
Hola
Te has olvidado decir que Servidor SQL utilizas. Parece Transact-SQL, o sea SQL-Server ¿ correcto ?. En ese caso puedes utilizar la cláusula IF UPDATE(Campo) Ejplo. Código:
CREATE TRIGGER Actualiza_Estado_Cmpnas ON CMPNAS FOR UPDATE AS declare @CDGOCMPNATEMP integer, @ACTIVOTEMP integer begin IF UPDATE(Activo) BEGIN SELECT @CDGOCMPNATEMP = CDGO, @ACTIVOTEMP = ACTIVA FROM INSERTED UPDATE CMPNASLIN SET ACTIVO = @ACTIVOTEMP WHERE CDGOCMPNA = @CDGOCMPNATEMP UPDATE CMPNASLINSUP SET ACTIVO = @ACTIVOTEMP WHERE CDGOCMPNA = @CDGOCMPNATEMP UPDATE FCTRASCAB SET ACTIVA = @ACTIVOTEMP WHERE CDGOCMPNA = @CDGOCMPNATEMP end end
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
|