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

Hola amigos, bueno aca yo denuevo ahora con problemas en el momento en q hago el update para q la familia delniño quede inactiva en el momento en q el unico hijo q queda de esa familia es desactivado, bueno el trigger no me tira n error de sintaxis ni nada, pero me manda el error en el momento en q el unico niño de la familia es desactivado (en ese momento la familia de ese niño igual debe quedar inactiva ya q no tiene mas hijos activos dentro del sistema) bueno al ejecutar el update me actualiza el campo estado del niño a DESACTIVADO, en ese momento al ser el unico hijo que queda de la faimila, dicha familia tambien debe quedar desactivada pero aqui me manda el error el trigger al ejecutar el update del campo estado del niño a desactivo, el error q me manda es el siguiente:
Código:
ERROR: schema "ninos" does not exist
Estado SQL:3F000
Contexto:SQL statement "SELECT rut_padre,rut_madre FROM familia WHERE id_familia=ninos.NEW.id_familia"
PL/pgSQL function "cancelar_familia_antes_de_nino" line 28 at SQL statement
y mi trigger es este:

Código:
REATE 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 INTO padres rut_padre,rut_madre FROM familia WHERE id_familia=ninos.NEW.id_familia;
  
        UPDATE familia SET estado = 'DESACTIVADO' WHERE id_familia=ninos.new.id_familia;
  
        UPDATE padre SET estado = 'DESACTIVADO' WHERE rut_padre=padres.NEW.rut_padre;
  
        UPDATE madre  SET estado = 'DESACTIVADO' WHERE rut_madre=padres.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 no se pq me manda ese error de la variable record ninos, ya q la tengo declarada y al insertar/ejecutar el trigger en la bd no me manda ningun error, en q estoy fallando ahora amigos??? porfavor ruego su ayuda amigos!!!!, de antemano gracias.... bye