Aktualisieren eine Spalte automatisch, wenn eine Spalte in einer Tabelle aktualisiert
Tabelle-Name:User_table
Uname pwd expire_date update_pwd_date
-------------------------------------------------------------
aaa aaa 30-AUG-2013 null
bbb bbb 01-SEP-2013 null
ccc ccc 15-sep-2013 null
ddd ddd 29-SEP-2013 null
So, wenn wir gehen, um zu aktualisieren pwd
Spalte, es sollte automatisch aktualisieren update_pwd_date
Spalte mit dem aktuellen Datum(DATEPART).
Möchte ich eine Ausgabe wie:
Uname pwd expire_date update_pwd_date
-------------------------------------------------------------
aaa eee 30-AUG-2013 23-AUG-2013
bbb fff 01-SEP-2013 23-AUG-2013
ccc ggg 15-sep-2013 23-AUG-2013
ddd hhh 29-SEP-2013 23-AUG-2013
Eigentlich bin ich versucht zu verwenden, unter trigger.Aber es funktioniert nicht.
create or replace trigger user_trg
before update of pwd
on user_tab
for each row
declare
Pragma autonomous_transaction;
begin
update user_tab set pas_update=sys date where pwd=:new.pwd;
commit;
end;
Eigentlich bin ich versucht, unter trigger.Aber es funktioniert nicht.
create or replace trigger user_trg
vor dem update von pwd
auf user_tab
für jede Zeile
erklären
Pragma
autonomous_transaction;
beginnen
update user_tab set pas_update=s
ys
Datum, wo p
wd
=:n
ew
.pw
d`;
commit;
end;
Bitte jemand geben können, die Lösung für diese Abfrage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich, die andere Antworten geben wird, was Sie brauchen für den Auslöser.
Gefällt mir auslöst. Viel. Nicht, dass Sie nicht arbeiten, es ist, dass Sie oft übersehen oder Abhängigkeiten vergessen. Kürzer, Sie sind der Teufel.
Vielleicht kann ich Sie davon überzeugen, es zu versuchen einen anderen Weg.
Bist du schon schreiben von PL/SQL, warum nicht erstellen Sie einfach eine API (package)? Es ist ziemlich einfach eigentlich.
Annahmen:
1. uname ist ein PK
Dadurch können Sie genauer Steuern Sie die Qualität Ihrer Daten. Verlassen eine bestimmte Tabelle öffnen, um UPDATE/INSERT/DELETE von nichts, aber das Verfahren bedeutet, Sie sind nur Hoffnung, dass jeder folgt dieser bestimmten Regel (das ist der Grund, warum der trigger ist notwendig). Entfernen Sie den Auslöser. Schließen Sie den Zugriff auf diese Tabelle und die Menschen zwingen/Anwendungen zur Verwendung von PL/SQL-API.
Nur etwas zu prüfen...
Wenn Sie die Aktualisierung einer Spalte in der gleichen Tabelle/Zeile, die immer aktualisiert wird, dann sollten Sie nicht verwenden UPDATE-Anweisung. Einfach, legen Sie die Spalte mit dem neuen Wert.
Da gibt es auch keine Notwendigkeit für pragma autonomous transaction-oder COMMIT.
Versuchen, diese,