Works für mich (zB von Ihrem Link, aber es ist im Grunde das gleiche wie Ihr Beitrag):
SQL> create table demo (id integer, salary number);
Table created.
SQL> create or replace trigger display_salary_changes
2 before delete or insert or update on demo
3 for each row
4 when (new.id > 0)
5 declare
6 sal_diff number;
7 begin
8 sal_diff := :new.salary - :old.salary;
9 dbms_output.put_line('Old salary: ' || :old.salary);
10 dbms_output.put_line('New salary: ' || :new.salary);
11 dbms_output.put_line('Salary difference: ' || sal_diff);
12 end;
13/
Trigger created.
SQL> show errors
No errors.
SQL> insert into demo (id, salary) values (1, 100);
Old salary:
New salary: 100
Salary difference:
1 row created.
SQL> update demo set salary = salary * 1.1 where id = 1;
Old salary: 100
New salary: 110
Salary difference: 10
1 row updated.
In Ihrem Beispiel zeigt es
Trıgger DISPLAY_SALARY_CHANGES created.
die nicht aussieht wie SQL * Plus-Ausgabe. Welches Werkzeug hast du benutzt?
Danach gibt es eine SQL * Plus SP2-0552
Fehler über einen nicht definierten Bind Variable, gefolgt von
PL/SQL procedure successfully completed.
Welches Verfahren war das? Ich vermute, dass dies die Ausgabe eines Skripts mit einem anderen Schritt ist, der nach dem Erstellen des Triggers fehlschlägt.
Ist der Trigger gültig? Sie können in der Regel der rechten Maustaste und überprüfen Eigenschaften in Desktop-Tools, oder an der SQL * Plus-Eingabeaufforderung eingeben
show errors trigger display_salary_changes
Sie versuchen, in sqlplus oder etwas andere (SQL-Entwickler, plsql Entwickler, Kröte) zu kompilieren? –
@ АнатолийПредеин, Ich benutze Sql Developer Version 4.1.1 –
Datei -> neu -> Alle Elemente -> Sql-Datei (Datenbank-Datei) -> und früheren Code im Fenster und drücken Sie dann F5. siehe Screenshot https://gyazo.com/0763ec50a7aa637a66305366f7bed5ee ohne Fehler –