Ver Mensaje Individual
  #21 (permalink)  
Antiguo 22/07/2009, 18:53
r0xdrig0
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 17 años
Puntos: 0
Respuesta: Como auditar tablas en Postgre 8.2

Hola huesos, probe como me sugeriste, pero no pe compila y no se pq :S

me manda error en la linea del END; no se pq, no se como deberia ser la sintaxis, probe colocando un end; despues de cada end if pero me sigue dando el error q es este
Código:
ERROR: syntax error at or near ";"
Estado SQL:42601
Caracter: 1756
bueno aqui pego el code de mi trigger para q porfavor me echen una mano para saber pq no me compila y como deberia ser..... porfavor amigos ruego su ayuda!!!! mi code del trigger es:

Código:
  CREATE OR REPLACE FUNCTION cancelar_familia_antes_de_nino() returns TRIGGER AS
   
            $$
 
         DECLARE

       
   
            ninos record;
     
 
            padres record;
 
       
 
               
 
         
 
            BEGIN
 
       
 
            SELECT INTO ninos T1.IF AS id_familia, count(fxh.id_familia) AS numhijos FROM
 
       
 
            (SELECT id_familia AS IF FROM familia_x_hijos WHERE id_nino=new.id_nino)AS T1
 
       
 
            INNER JOIN familia_x_hijos fxh ON T1.IF = fxh.id_familia
 
       
 
            GROUP BY T1.IF;
  
       
 
            UPDATE familia_x_hijos SET estado = 'DESACTIVADO' WHERE id_nino=NEW.id_nino;
 
       
 
             
 
       
 
            IF ninos.numhijos = 1 then  
 
                IF nino.old.estado='ACTIVO' then
 
              SELECT INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=ninos.id_familia;
 
       
 
              UPDATE familia SET estado = 'ACTIVO' WHERE id_familia=ninos.id_familia;
 
       
 
              UPDATE padre SET estado = 'ACTIVO' WHERE rut_padre=padres.rut_padre;
 
       
 
              UPDATE madre  SET estado = 'ACTIVO' WHERE rut_madre=padres.rut_madre;  


             ELSE 

                IF nino.old.estado='DESACTIVADO' then


                  UPDATE familia SET estado = 'DESACTIVADO' WHERE id_familia=ninos.id_familia;
 
       
 
                  UPDATE padre SET estado = 'DESACTIVADO' WHERE rut_padre=padres.rut_padre;
 
       
 
                  UPDATE madre  SET estado = 'DESACTIVADO' WHERE rut_madre=padres.rut_madre; 
 
 


            END IF;  
       
  
            END IF;      
  
        
  
            RETURN new;
  
       end;
  
           
  
       
  
             
  
       
  
            $$
  
       
  
            LANGUAGE 'plpgsql';
  
       
  
            CREATE TRIGGER cancelar_familia_antes_de_nino before
  
       
  
               UPDATE ON nino
  
       
  
               FOR each row execute procedure cancelar_familia_antes_de_nino();
porfavor ruego su ayuda amigos!!!! de antemano gracias..... bye