sql >> Database >  >> RDS >> Oracle

Hoe een procedure aan te roepen die dezelfde tabel gebruikt na trigger?

Dat kan niet.

Een normale trigger op rijniveau kan geen query uitvoeren op de tabel waarop de trigger is gedefinieerd, omdat dat een muterende tabeluitzondering zou veroorzaken. Ik neem aan dat je daarom je trigger hebt aangegeven om een ​​autonome transactie te gebruiken (een autonome transactie voor iets anders dan permanente logging is vrijwel zeker een fout). Als u dat echter doet, kan uw trigger de niet-vastgelegde wijzigingen die door de activerende transactie zijn aangebracht, niet zien. Dat is het probleem dat je nu tegenkomt.

Een alternatief zou zijn om een ​​samengestelde trigger te gebruiken . Je zou een verzameling van test_table.type_%type . declareren , voegt u de waarden toe die aan deze verzameling worden gewijzigd in het gedeelte op rijniveau van uw trigger, en herhaalt u de elementen in de verzameling in het gedeelte na de instructie van uw trigger. Een trigger op instructieniveau mag de tabel opvragen waarop de trigger is gedefinieerd, zodat u uw procedure kunt aanroepen vanuit het gedeelte na de instructie van uw samengestelde trigger.



  1. Een enkele rij splitsen in meerdere kolommen in mysql

  2. strapi database.js / meerdere databaseconfiguraties

  3. haal elke dag 3 rijen op bij een planning voor 1 jaar

  4. Kan geen verbinding maken met mysql op afstand vanaf Mac lion