sql >> Databáze >  >> RDS >> Oracle

INSERT trigger pro vložení záznamu do stejné tabulky

K mutaci dojde vždy, když máte spouštěč na úrovni řádku, který upravuje tabulku, na které spouštíte. Problém je v tom, že Oracle nemůže vědět, jak se chovat. Vložíte řádek, samotný trigger vloží řádek do stejného tabulka a Oracle je zmatený, protože ty vložení do tabulky kvůli spouštěči, podléhají také spouštěcí akci?

Řešením je třístupňový proces.

1.) Úroveň příkazu před spouštěčem, který vytvoří instanci balíčku, který bude sledovat vkládané řádky.

2.) Úroveň řádku před nebo po spouštěči, které uloží informace o tomto řádku do proměnných balíčku, které byly vytvořeny v předchozím kroku.

3.) Úroveň příkazu po spouštěči, která vloží do tabulky všechny řádky, které jsou uloženy v proměnné balíčku.

Příklad tohoto lze nalézt zde:

http://asktom.oracle.com/pls/asktom/ASKTOM .download_file?p_file=6551198119097816936

Doufám, že to pomůže.



  1. Jak uložit LocalTime do hibernace

  2. Ochrana SQL Injection pouze pomocí str_replace

  3. Optimistická fronta zamykání

  4. jak mohu kódovat řetězec v HMAC-SHA256 pomocí pl/sql?