Oracle: Spalte updaten mit Trigger

Hallo,

ich habe eine Tabelle mit zwei Spalten. Wenn ich in der einen Spalte A etwas ändere, soll sich der neue Wert von A auch in die zweite Spalte B schreiben. Dazu habe ich folgenden Trigger geschrieben:

create or replace trigger spalte_update
after insert or update of Spalte_a on star
for each row
begin
insert into star(spalte_b) values(:new.spalte_a);
end;

Aber, wenn ich dann ein Update für Splate A durchführe, kommt folgende Fehlermeldung;

FEHLER in Zeile 1:
ORA-04091: Tabelle STAR wird gerade geändert, Trigger/Funktion sieht dies möglicherweise nicht
ORA-06512: in „SPALTE_UPDATE“, Zeile 2
ORA-04088: Fehler bei der Ausführung von Trigger ‚SPALTE_UPDATE‘

Was mache ich falsch?

Gruß, Meike

N’Abend.

google.de@ORA-04091 brachte u.a den Link http://www.techonthenet.com/oracle/errors/ora04091.htm hervor. Vielleicht bringt der’s schon ?

mfg M.L.

***Werbung***
http://www.derentwickler.de

Hallo Meike,

Du machst bei Deinem Trigger einen Denkfehler. Das INSERT hast Du ja schon gemacht. Beim Trigger geht es nur noch darum, der Datenbank die Werte zu korrigieren.

Du darfst NIEMALS ein INSERT auf die Tabelle machen, die den Trigger aufruft.

Richtig geht es ganz, ganz, ganz einfach:

BEGIN

:NEW.spalte_b = :NEW.spalte_a;

END;

Fertig.

Du hast ja den gesamten Vorrat an Attributen der Teile zur Verfügung. Bei Deinem Insert war der Wert der Spalte B eben nur auf NULL (bzw auf deren Defaultwert) gesetzt.

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!

Du darfst NIEMALS ein INSERT auf die Tabelle machen, die den
Trigger aufruft.

Eigentlich nicht einmal ein Select auf die triggerbeinhaltende (schönes Wort) Tabelle - die englische Fehlermeldung „table is mutating“ macht trotzdem irgendwie mehr her …

Grüße,
Tomh