我正在尝试实现一个交通罚款控制系统。当在OBSERVACION表中引入雷达观测值时,触发器应该检查是否有一行在同一辆车上有观测值,然后计算罚款成本。
我想要一个触发器来检查表的每一行中的条件语句。我的意思是,我希望触发器条件检查表中的所有值,并找出其中一个值是否等于引入的新值。如下所示:
WHEN(NEW.fecha_foto = fecha_foto)AND...其中fecha_foto是表中的任意值。
有可能吗?
谢谢。
发布于 2012-02-27 21:49:25
对拥有触发器的同一个表发出DML (包括SELECT)的触发器会引发ORA-4091的问题,即变异表异常。Oracle抛出此错误是因为它期望事务的结果是确定性的,并且在其自己的表上发出DML的触发器将不确定性引入到过程中。
变化表是糟糕设计的可靠指示器,尤其是糟糕的数据模型,这里似乎就是这种情况。
如果fine的值依赖于单个观察的结果,那么FINE可以作为OBSERVACION表中的一列。但是,您的业务规则表明,该值可能取决于几个观察值,如果它们落在某个特定的时间段内。在这种情况下,罚款应该在它自己的表中。您需要在OBSERVACION和MULTA之间使用外键来指示特定罚款涵盖哪些观察结果。
https://stackoverflow.com/questions/9455690
复制相似问题