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

Hola huesos, gracias nuevamente por tu ayuda, pero lo hice como me dijiste mi trigger lo tengo asi ahora:
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  
  
        SELECT rut_padre,rut_madre FROM familia WHERE id_familia=NEW.id_familia;
  
        UPDATE familia SET estado = 'DESACTIVADO' WHERE id_familia=new.id_familia;
  
        UPDATE padre SET estado = 'DESACTIVADO' WHERE rut_padre=NEW.rut_padre;
  
        UPDATE madre  SET estado = 'DESACTIVADO' WHERE rut_madre=NEW.rut_madre;  
  
      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();
y el error q me da ahora al ejecutar el update del campo estado del niño a desactivado es el siguiente:
Código:
ERROR: record "new" has no field "id_familia"
Estado SQL:42703
Contexto:PL/pgSQL function "cancelar_familia_antes_de_nino" line 28 at SQL statement
el update lo hago en la misma bd asi:
Código:
UPDATE nino SET estado='DESACTIVADO' WHERE nino.id_nino= '0001'
en q estoy fallando ahora amigos??? porfavor de verdad ruego su ayuda amigos!!!... de antemano gracias.... bye