Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/07/2015, 19:35
YahairaSarahi
Invitado
 
Mensajes: n/a
Puntos:
Trigger que se dispare al insertar y actualizar un campo de una tabla

Hola a todos, esperando me puedan ayudar
Necesito hacer lo siguiente: crear trigger que cuando inserte una ruta en km se guarde tambien en millas y cuando se inserte en millas se ponga tambien en km

Los campos de mi tabla es ruta, distancia_k y distancia_m

Y mis funciones y mis triggers son los siguientes
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION actualizar_kilometros()
  2. RETURNS TRIGGER
  3. AS $$
  4. DECLARE
  5. m NUMERIC;
  6. BEGIN
  7.     m:= 1.609344;
  8.    
  9.         NEW.distancia_k := NEW.distancia_m*m;
  10.        
  11.     RETURN NEW;
  12.     END;
  13.     $$
  14.     LANGUAGE 'plpgsql';
  15.  
  16. CREATE OR REPLACE FUNCTION actualizar_millas()
  17. RETURNS TRIGGER
  18. AS $$
  19. DECLARE
  20. k NUMERIC;
  21. BEGIN
  22.     k:= 0.621371;
  23.    
  24.         NEW.distancia_m :=NEW.distancia_k*k;
  25.        
  26.     RETURN NEW;
  27.     END;
  28.     $$
  29.     LANGUAGE 'plpgsql';
  30.  
  31.  
  32.    
  33. --DEFINICION DEL TRIGGER
  34. CREATE TRIGGER actualizar_kilometros
  35. BEFORE INSERT OR UPDATE OF distancia_m ON distancias
  36. FOR each ROW
  37. EXECUTE PROCEDURE actualizar_kilometros();
  38.  
  39.  
  40. CREATE TRIGGER actualizar_millas
  41. BEFORE INSERT OR UPDATE OF distancia_k ON distancias
  42. FOR each ROW
  43. EXECUTE PROCEDURE actualizar_millas();


El codigo anterior solamente funciona cuando actualizo, cuando inserto solamente se inserta el nombre de la ruta, pero no se inserta nada en millas ni en kilometros

Me podrian ayudar? no se que tengo mal