Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2004
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
Question 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.
__________________
Toni | blog
Responder Con Cita
  #2  
Antiguo 30-03-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 30-03-2004
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
Thumbs up

Gracias Guillotmarc !!!!

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

Gracias por tu ayuda.

Un saludo.
__________________
Toni | blog
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:10:30.


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
Copyright 1996-2007 Club Delphi