17/03/2010, 04:26
|
| | 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> |