Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Trigger - Problem mit mutierenden Tabellen

Wie Sie bemerkt haben, wird es schwierig sein, Ihre Geschäftsanforderungen mit Triggern zu beantworten. Der Grund dafür ist, dass Oracle darf Aktualisieren/Einfügen der Tabellen mit mehr als einem Thread gleichzeitig für eine einzelne Abfrage (parallele DML). Dies impliziert, dass Ihre Sitzung die aktualisierte Tabelle während der Aktualisierung nicht abfragen kann .

Wenn Sie dies wirklich mit Triggern tun möchten, müssen Sie dem Titel Art von Logik, die in diesem Artikel von Tom Kyte gezeigt wird . Wie Sie sehen können, ist es nicht einfach.

Es gibt eine andere, einfachere, elegantere und einfacher zu wartende Methode:Verwenden Sie Prozeduren. Widerrufen Sie das Recht zum Aktualisieren/Einfügen für den/die Benutzer der Anwendung und schreiben Sie eine Reihe von Prozeduren, die es der Anwendung ermöglichen, die Statusspalten zu aktualisieren.

Diese Prozeduren würden die übergeordnete Zeile sperren (um zu verhindern, dass mehrere Sitzungen denselben Zeilensatz ändern) und Ihre Geschäftslogik auf effiziente, lesbare und leicht zu wartende Weise anwenden.