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

Oracle тригери - проблем с мутиращи таблици

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

Ако наистина искате да направите това с тригери, ще трябва да следвате заглавието вид логика, показана в тази статия от Том Кайт . Както виждате, не е нещо просто.

Има друг, по-прост, по-елегантен, по-лесен за поддръжка метод:използвайте процедури. Отменете правото на актуализиране/вмъкване на потребителя(ите) на приложението и напишете набор от процедури, които позволяват на приложението да актуализира колоните за състояние.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изпълните .SQL скриптов файл с помощта на c#

  2. Как да пишем обекти с малки букви в база данни на Oracle?

  3. Как да изберете диапазони в диапазон от записи в Oracle

  4. Escape амперсанд в PL/SQL Developer

  5. MySQL еквивалент на ORACLES rank()