Oracle
 sql >> база данни >  >> RDS >> Oracle

Условие на задействане във всички редове

Тригер, който издава DML (включително SELECT) срещу същата таблица, която притежава тригера, повдига призрака на ORA-4091, изключение на мутиращата таблица. Oracle изхвърля тази грешка, защото очаква резултатът от транзакция да бъде детерминистичен и тригер, който издава DML на собствената си таблица, внася несигурност в процедурите.

Мутиращата таблица е надежден индикатор за лош дизайн, по-специално лош модел на данни и това изглежда е случаят тук.

Ако стойността на глобата зависи от резултата от едно наблюдение, тогава е добре FINE да бъде колона в таблицата OBSERVACION. Вашите бизнес правила обаче показват, че стойността може да зависи от няколко наблюдения, ако попадат в определен период. В този случай глобата трябва да бъде в отделна таблица. Ще ви е необходим външен ключ между OBSERVACION и MULTA, за да посочите кои наблюдения са обхванати от определена глоба.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL - Как да получите различен брой за всяка колона динамично?

  2. Oracle Client Blob 10K ограничение с NHibernate и Mono?

  3. Първи стъпки с Oracle SQL Developer в Windows

  4. програмна проверка за отворена връзка в JDBC

  5. След премахване на дяла, индексът стана неизползваем, какво да правя,