Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con Stored Procedure (https://www.clubdelphi.com/foros/showthread.php?t=8713)

tgsistemas 30-03-2004 22:45:46

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

Creo que se pueden utilizar los "if" dentro de un stored procedure pero no tengo claro como hacerlo.

Saludos y gracias.

guillotmarc 30-03-2004 23:21:49

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

Saludos.

tgsistemas 30-03-2004 23:30:40

Gracias Guillotmarc !!!! :)

Efectivamente es con SQL Server (disculpa el olvido), lo he probado y funciona correctamente.

Gracias por tu ayuda.

Un saludo.


La franja horaria es GMT +2. Ahora son las 03:42:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi