一、old和new在oracle中不區分大小寫;
二、old和new可以用在declare中也可以用在begin裡的sql語句;(只會在begin中的sql語句裡用)
三、old表示插入之前的值,new表示新插入的值;
(old用在刪除和修改,new用在新增和修改)(但是用delete new值也沒有報錯,不知道怎麼回事)
create or replace trigger trigger_name --觸發器名不能過長,否則報錯:ora-00972:識別符號過長
before insert or update of colunm1,column2,、、、
on table_name
for each row
--行級觸發器,一般表記的會報錯,沒有深入研究
declare
--宣告引數
pragma autonomous_transaction; --自治事務
parameter_name 引數型別; --引數
begin
if inserting then
insert into table_name values(:new.欄位名1,:new.欄位名2,、、、);
elsif updating then
update table_name set 表欄位名=:new.欄位名,、、、 where 欄位名=:new.欄位名;
end if;
commit;
--自治事務的提交,若沒有自治事務,觸發器是不允許有commit的
end;
注意:sql語句中的表與觸發器的表不相同,如果相同且不加自治事務會導致報錯:ora-04091:表***發生了變化,觸發器/函式不能讀它;
即使新增了自治事務,要是當表的某個字段發生變化,對另一張表進行操作之後,又對該有觸發器的表字段進行修改,
也會報錯:ora-00060:等待資源時檢測到死鎖;
Oracle觸發器中的new和old
對於oracle觸發器中的new和old new 為乙個引用最新的列值 old 為乙個引用以前的列值 這兩個變數只有在使用了關鍵字 for each row 時才存在.且update語句兩個都有,而insert只有 new delect 只有 old createorreplacetriggertr...
Orcale觸發器中的冒號,new和old
問 這 中的冒號 是什麼意思呢?variable x refcursor exec authors sel x print x 答 x 是乙個主變數 主變數是乙個宣告在主環境中的變數,它會被傳遞到乙個或多個pl sql程式中,在程式中可以跟其他的變數一樣使用。sql plus和pl sql都能引用主...
Oracle 觸發器中NEW和OLD關修飾詞說明
觸發器中old 和 new修飾詞,old 代表變更前記錄,new代表變更後的記錄。create or replace trigger derive commission pct before insert or update of salary on employees for each row w...