Ver Mensaje Individual
  #21 (permalink)  
Antiguo 17/03/2010, 04:26
jc3000
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Echadme una mano con triggers, estoy aprendiendo

Si los dos campos no se actualizen a la vez ( no he probado esa casuistica ) a lo mejor te valdría esto:

Cita:
SQL*Plus: Release 8.0.5.0.0 - Production on Mié Mar 17 11:23:32 2010

(c) Copyright 1999 Oracle Corporation. All rights reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> CREATE TABLE distancias (ruta varchar(10),
2 distancia_k integer,
3 distancia_m integer )
4 /

Tabla creada.

SQL> insert into distancias
2 values
3 ('1',2,3)
4 /

1 fila creada.

SQL>
SQL>
SQL> commit
2 /

Validación terminada.

SQL>
SQL> insert into distancias
2 values
3 ('2',4,5)
4 /

1 fila creada.

SQL>
SQL>
SQL> commit
2 /

Validación terminada.

SQL> CREATE OR REPLACE TRIGGER up_km
2 before UPDATE Of distancia_k,distancia_m on distancias
3 FOR each row
4 begin
5 if :new.distancia_k <> :old.distancia_k THEN
6 :new.distancia_m := :NEW.distancia_k* 2;
7 elsif :new.distancia_m <> :old.distancia_m THEN
8 :new.distancia_k := :NEW.distancia_m* 4;
9 end if;
10 end;
11 /

Disparador creado.

SQL> select * from distancias
2 ;

RUTA DISTANCIA_K DISTANCIA_M
---------- ----------- -----------
1 2 3
2 4 5

SQL> update distancias
2 set distancia_k = 6
3 where ruta = '1';

1 fila actualizada.

SQL> commit;

Validación terminada.

SQL> select * from distancias;

RUTA DISTANCIA_K DISTANCIA_M
---------- ----------- -----------
1 6 12
2 4 5

SQL> drop table distancias purge;

Tabla borrada.

SQL>