sql >> Databasteknik >  >> RDS >> Oracle

Oracle-triggers - problem med muterande tabeller

Som du har märkt kommer det att vara svårt att svara på dina affärskrav med triggers. Anledningen är att Oracle kan uppdatera/infoga tabellerna med mer än en tråd samtidigt för en enda fråga (parallell DML). Detta innebär att din session inte kan fråga tabellen som den uppdaterar medan uppdateringen äger rum .

Om du verkligen vill göra detta med triggers måste du följa typ av logik som visas i den här artikeln av Tom Kyte . Som du kan se är det inte något enkelt.

Det finns en annan, enklare, mer elegant, lättare att underhålla metod:använd procedurer. Återkalla rätten att uppdatera/infoga till användaren/användarna av applikationen och skriv en uppsättning procedurer som tillåter applikationen att uppdatera statuskolumnerna.

Dessa procedurer skulle hålla ett lås på den överordnade raden (för att förhindra flera sessioner för att ändra samma uppsättning rader) och skulle tillämpa din affärslogik på ett effektivt, läsbart och lättskött sätt.



  1. dödläge i postgres på enkel uppdateringsfråga

  2. Analysera json genom json_table i Oracle 18

  3. Hur kan jag ge ett alias till ett bord i Oracle?

  4. Hur man kör flera kopplingar med olika parametrar i en enda fråga