Oracle - Actualización mediante triggers de integridad refe

 
Vista:

Actualización mediante triggers de integridad refe

Publicado por Pablo (1 intervención) el 09/09/2001 17:42:53
partiendo de estas tablas:
persona(dni,nombre,localidad)
rai(cod_persona,cod_entidad,fecha,cantidad, interes-mensual)
entidad(codigo,nombre,domicilio)
me encuentro con el siguiente problema
SQL> CREATE TRIGGER ACT_CLAV
2 BEFORE UPDATE OF CODIGO ON ENTIDAD
3 FOR EACH ROW
4 BEGIN
5 UPDATE RAI SET RAI.COD_ENTIDAD=:NEW.CODIGO
6 WHERE RAI.COD_ENTIDAD=:OLD.CODIGO;
7 END;
8 /

Trigger created.

SQL> UPDATE ENTIDAD SET CODIGO=15
2 WHERE CODIGO=323;
UPDATE ENTIDAD SET CODIGO=15
*
ERROR at line 1:
ORA-04091: table SYSTEM.ENTIDAD is mutating, trigger/function may not see it
ORA-06512: at "SYSTEM.ACT_CLAV", line 2
ORA-04088: error during execution of trigger 'SYSTEM.ACT_CLAV'

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Actualización mediante triggers de integridad r

Publicado por danu (25 intervenciones) el 11/09/2001 16:30:42
Probaría un after en vez de un before, no se o quizá haría un procedure o un package, en mi opinión no conviene darle muchas tareas (tipo un cursor) a un trigger, mas que un update de registros en una tabla.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualización mediante triggers de integridad r

Publicado por Ken (115 intervenciones) el 13/09/2001 00:02:27
Hola
Lo primero se soluciona con un paquete y dos triggers
uno before y otro after

Lo segundo veo q usas el usuario system, lo cual esta mal y espero q uses otro tablespace diferente al system porque sino se fragmenta y no lo arreglas sino reconstruyendo la BD.

Saludos
Ken Fernando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar