本人剛剛接觸Oracle,想向各位熟悉Oracle的大神請教一下,oracle sql developer是否無法使用行級觸發器的new和old變數??我定義的觸發器能夠在sqlplus中編譯并且起作用,但是放到 sql developer上執行的時候總是彈出輸入系結的對話框。
百度兩個小時都沒有找到確定的答案。是sql developer設定問題?還是sql developer 根本不支持這種觸發器的new和old變數?
希望各位指點一下,謝謝。
create or replace trigger tri_emp
before update
on employees
for each row
begin
if :new.salary>:old.salary then
dbms_output.put_line(:new.first_name||'工資調高了');
elsif :new.salary<:old.salary then
dbms_output.put_line(:new.first_name||'工資調低了');
else
dbms_output.put_line(:new.first_name||'工資沒有調整');
end if;
end tri_emp;
uj5u.com熱心網友回復:
觸發器一般不用來做這種用途。sql developer好像很少有人用,建議你裝個pl/sql
uj5u.com熱心網友回復:
我安裝plsql試了一下,確實不會報錯,謝謝。不過不知道這種觸發器用sql developer怎么實作。
uj5u.com熱心網友回復:
沒看出來問題。。。uj5u.com熱心網友回復:
我也在用sql developer,沒遇到過這種問題,也用你的腳本做了個測驗,也正確執行了。
uj5u.com熱心網友回復:
SQL>
SQL> create table employees(salary int, first_name varchar(10));
Table created
SQL> insert into employees values(100,'zhangsan');
1 row inserted
SQL> create or replace trigger tri_emp
2 before update
3 on employees
4 for each row
5 begin
6 if :new.salary>:old.salary then
7 dbms_output.put_line(:new.first_name||'工資調高了');
8 elsif :new.salary<:old.salary then
9 dbms_output.put_line(:new.first_name||'工資調低了');
10 else
11 dbms_output.put_line(:new.first_name||'工資沒有調整');
12 end if;
13 end tri_emp;
14 /
Trigger created
SQL> set serverout on;
SQL> update employees set salary = 200;
zhangsan工資調高了
1 row updated
SQL> update employees set salary = 100;
zhangsan工資調低了
1 row updated
SQL> update employees set salary = 100;
zhangsan工資沒有調整
1 row updated
SQL> drop table employees purge;
Table dropped
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96369.html
標籤:基礎和管理
上一篇:查詢視圖問題
下一篇:Oracle資料對比問題
