sql >> Base de Datos >  >> RDS >> Oracle

Condición de disparo en todas las filas

Un activador que emite DML (incluido SELECT) contra la misma tabla que posee el activador genera el espectro de ORA-4091, la excepción de tabla mutante. Oracle arroja este error porque espera que el resultado de una transacción sea determinista, y un activador que emite DML en su propia tabla introduce incertidumbre en los procedimientos.

La tabla mutante es un indicador confiable de un mal diseño, específicamente un mal modelo de datos y ese parece ser el caso aquí.

Si el valor de una multa depende del resultado de una sola observación, está bien que MULTA sea una columna en la tabla OBSERVACION. Sin embargo, sus reglas comerciales indican que el valor puede depender de varias observaciones, si se encuentran dentro de un período determinado. En este escenario, la multa debería estar en una tabla propia. Necesitaría una clave externa entre OBSERVACION y MULTA para indicar qué observaciones están cubiertas por una multa en particular.