sql >> Database >  >> RDS >> Oracle

Oracle-triggers - probleem met het muteren van tabellen

Zoals u hebt gemerkt, zal het moeilijk zijn om uw zakelijke vereisten met triggers te beantwoorden. De reden is dat Oracle mag update/voeg de tabellen in met meer dan één thread tegelijk voor een enkele query (parallelle DML). Dit houdt in dat uw sessie geen query kan uitvoeren op de tabel die wordt bijgewerkt terwijl de update plaatsvindt .

Als je dit echt met triggers wilt doen, moet je de titel soort logica getoond in dit artikel door Tom Kyte . Zoals je kunt zien is het niet iets eenvoudigs.

Er is een andere, eenvoudigere, elegantere, gemakkelijker te onderhouden methode:gebruik procedures. Herroep het recht van update/invoegen voor de gebruiker(s) van de applicatie en schrijf een reeks procedures waarmee de applicatie de statuskolommen kan bijwerken.

Deze procedures zouden de bovenliggende rij vergrendelen (om te voorkomen dat meerdere sessies dezelfde reeks rijen wijzigen) en zouden uw bedrijfslogica op een efficiënte, leesbare en gemakkelijk te onderhouden manier toepassen.



  1. Hoe voer ik Google Cloud SQL alleen uit als ik het nodig heb?

  2. Mysql-selectiequery voor het verkrijgen van het huidige gebruikersbericht en het gevolgde bericht van een vriend

  3. PHP/MySQL:Modelleer herhalende gebeurtenissen in een database, maar zoek naar datumbereiken

  4. geef de waarde van de PHP-variabele door aan de SQL IN-clausule