ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1011
1011
EMPFEHLEN
-
Hallo zusammen,
ich habe einem Trigger erstellt, der auch Valid ist aber er funktioniert leider nicht.
Wer kann mir hier weiterhelfen?, für Jeder Hilfe bin ich sehr Dankbar.
In eine Oracle Tabelle ANGEBOTE gibt es unter anderem eine Spalte ERGEBNIS, die bestimmte Einträge, wie z.B. NK, NT, NR, NB und ER enthält, und eine Spalte DAENDDAT mit dem Format DATE.
Ich will das das Aktuelle Datum (SYSDATE) in die Spalte DAENDDAT automatisch eingetragen wird, sobald ich in der Spalte ERGEBNIS den vorhandenen Wert auf ER ändere.
Meine Trigger sicht so aus:
CREATE OR REPLACE TRIGGER ANG_DAT_AKT
AFTER INSERT OR UPDATE
OF ERGEBNIS
ON ANGEBOTE
FOR EACH ROW
DECLARE
Tagesdatum Date;
BEGIN
select sysdate into Tagesdatum from dual;
IF ((:OLD.ERGEBNIS != ’ER’) AND (:NEW.ERGEBNIS =’ER’)) THEN
Update Angebote SET DAENDDAT = Tagesdatum;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
null;
WHEN OTHERS THEN
null;
END;
/
-
22.11.06 09:12 #2
Zunächst mal solltes du deine Codebeispiel in eine lesbare Form bringen.
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
CREATE OR REPLACE TRIGGER ANG_DAT_AKT AFTER INSERT OR UPDATE OF ERGEBNIS ON ANGEBOTE FOR EACH ROW DECLARE Tagesdatum DATE; BEGIN SELECT sysdate INTO Tagesdatum FROM dual; IF ((:OLD.ERGEBNIS != ’ER’) AND (:NEW.ERGEBNIS =’ER’)) THEN UPDATE Angebote SET DAENDDAT = Tagesdatum; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN NULL; END; /
In deinem UPDATE Statement ist gar keine WHERE Klausel. Sollen alle Sätze das aktuelle Datum erhalten? Wenn ja wirst du auf den Fehler "ORA-xxxxx Trigger cannot modify mutating Table" oder so ähnlich laufen, nimm einfach mal deinen EXCEPTION Block raus, dann bekommst du auch die Fehlermeldung.
Wenn du nur das Datum des einen Satzes ändern möchtest, solltest du am besten einen BEFORE Trigger nehmen:
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
CREATE OR REPLACE TRIGGER ANG_DAT_AKT BEFORE INSERT OR UPDATE OF ERGEBNIS ON ANGEBOTE FOR EACH ROW DECLARE BEGIN IF ( ((:OLD.ERGEBNIS != ’ER’) OR (:OLD.ERGEBNIS IS NULL)) AND (:NEW.ERGEBNIS =’ER’)) THEN :NEW.DAENDDAT := SYSDATE; END IF; END; /
liebe Grüße
Exceptionfault (http://exceptionfault.de)
Never say: "Always"! Always say: "Never say never"! - Tom Kyte @ Ask Tom Live in Berlin 2008
-
Besten Dank Exceptionfault,
das hat hervorragend geklappt!.
Das war Super.
Ähnliche Themen
-
Sqllite trigger Problem
Von mike4004 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 02.09.10, 17:11 -
BEFORE DELETE TRIGGER Problem
Von klaussp im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 10.01.10, 15:11 -
Problem mit MySQL Trigger
Von VanHellsehn im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 11.03.09, 14:43 -
Formular Problem HILFEEEE
Von Onilink im Forum HTML & XHTMLAntworten: 8Letzter Beitrag: 15.06.05, 03:52 -
Hilfeeee....habe ein riesen problem
Von Hamsi im Forum Microsoft WindowsAntworten: 11Letzter Beitrag: 21.04.04, 09:37





Zitieren
Login





