Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyzwalacze Oracle - problem z mutacją tabel

Jak zauważyłeś, trudno będzie odpowiedzieć na Twoje wymagania biznesowe za pomocą wyzwalaczy. Powodem jest to, że Oracle może zaktualizuj/wstaw tabele z więcej niż jednym wątkiem w tym samym czasie dla pojedynczego zapytania (równoległy DML). Oznacza to, że Twoja sesja nie może wysłać zapytania do tabeli, którą aktualizuje podczas aktualizacji .

Jeśli naprawdę chcesz to zrobić za pomocą wyzwalaczy, musisz postępować zgodnie z tytułem rodzaj logiki przedstawionej w tym artykule Toma Kyte . Jak widać, nie jest to coś prostego.

Jest jeszcze inna, prostsza, bardziej elegancka, łatwiejsza w utrzymaniu metoda:stosowanie procedur. Cofnij prawo do aktualizacji/wstawiania użytkownikom aplikacji i napisz zestaw procedur, które pozwolą aplikacji aktualizować kolumny stanu.

Procedury te blokowałyby wiersz nadrzędny (aby zapobiec wielu sesjom modyfikowania tego samego zestawu wierszy) i stosowałyby logikę biznesową w wydajny, czytelny i łatwy w utrzymaniu sposób.



  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 — konwertowanie SDO_GEOMETRY na WKT?

  2. Czy jest jakaś różnica między !=i <> w Oracle Sql?

  3. Zwróć wiersze zawierające wartości liczbowe w Oracle

  4. Lekko w pigułce

  5. Instalowanie RAC dla bazy danych z plikami danych