Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TRIGGER -> Daten auf selbiger Tabelle ändern ? (https://www.delphipraxis.net/97658-trigger-daten-auf-selbiger-tabelle-aendern.html)

HolgerCW 14. Aug 2007 08:41

Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE

TRIGGER -> Daten auf selbiger Tabelle ändern ?
 
Hallo zusammen,

ich habe folgendes Problem:

Wenn ich diese Procedure:

Delphi-Quellcode:
CREATE OR REPLACE PROCEDURE NAECHSTE_PRUEFUNG (AN IN NUMBER, DB IN NUMBER) IS

my_ap_datum DATE;

...

BEGIN
 
  ...

  UPDATE SYSDBP.DBP_LEISTUNGSWERTE
  SET NAECHSTE_P = my_ap_datum, NAECHSTE_P_ART = 'Äussere Prüfung', NAECHSTE_P_DURCH = my_ap_person
  WHERE SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = AN
  AND SYSDBP.DBP_LEISTUNGSWERTE.ANZAHL = DB;

 ...

END;
/
durch unten genannten Trigger aufrufe, kommt die Fehlermeldung:

Tabelle SYSDBP.DBP_LEISTUNGSWERTE wird gerade geändert, Trigger/Funktion sieht dies möglicherweise nicht
ORA-06512:

Delphi-Quellcode:
CREATE OR REPLACE TRIGGER DBP_NAECHSTE_PRUEFUNG_BIU BEFORE INSERT OR UPDATE ON SYSDBP.DBP_LEISTUNGSWERTE FOR EACH ROW
BEGIN
 
 NAECHSTE_PRUEFUNG (:new.ANLAGENNUMMER, :new.ANZAHL);

END;
/
Ich möchte quasi mit dem Trigger der auf der Tabelle SYSDBP.DBP_LEISTUNGSWERTE liegt, in der gleichen Tabelle Änderungen durchführen.

Oder gibt es da eine andere Lösung. Sowas soll passieren:

In Tabelle1 Spalte1 wird ein Wert geändert. Der Trigger oder was anderes soll nun in Tabelle1 Spalte2 z.B. das Ergebnis aus Spalte1 * 2 reinschrieben.

Gruss und schon mal dank für Hilfe

Holger

dfried 14. Aug 2007 08:55

Re: TRIGGER -> Daten auf selbiger Tabelle ändern ?
 
Das was du da beschreibst nennt man das "Mutating Table" Problem bei ORACLE.
Wenn du bei Google danach suchst, dann gibt es da verschiedene Ansätze um das Problem zu umgehen.

Beispielhaft hab ich dir zwei davon mal rausgesucht:

Mutating Table #1
Mutating Table #2

HolgerCW 14. Aug 2007 10:44

Re: TRIGGER -> Daten auf selbiger Tabelle ändern ?
 
Vielen dank für die Links,

habe das jetzt umgebaut, so dass es klappt

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz