Oracle
 sql >> Database >  >> RDS >> Oracle

Trigger Oracle - problema con le tabelle mutanti

Come avrai notato, sarà difficile rispondere alle tue esigenze aziendali con i trigger. Il motivo è che Oracle può aggiornare/inserire le tabelle con più thread contemporaneamente per una singola query (DML parallelo). Ciò implica che la tua sessione non può interrogare la tabella che aggiorna mentre è in corso l'aggiornamento .

Se vuoi davvero farlo con i trigger, dovrai seguire il titolo tipo di logica mostrato in questo articolo di Tom Kyte . Come puoi vedere non è una cosa semplice.

C'è un altro metodo, più semplice, più elegante, più facile da mantenere:utilizzare le procedure. Revocare il diritto di aggiornamento/inserimento agli utenti dell'applicazione e scrivere una serie di procedure che consentano all'applicazione di aggiornare le colonne di stato.

Queste procedure manterrebbero un blocco sulla riga padre (per impedire a più sessioni di modificare lo stesso insieme di righe) e applicherebbero la tua logica aziendale in modo efficiente, leggibile e di facile manutenzione.