Oracle 觸發器中NEW和OLD關修飾詞說明

2021-08-21 19:16:57 字數 692 閱讀 5002

觸發器中old 和 new修飾詞,old 代表變更前記錄,new代表變更後的記錄。

create or replace trigger derive_commission_pct

before insert or update of salary on employees

for each row

when (new.job_id = 'sa_rep')

begin

if inserting

then :new.commission_pct := 0; --給:new.commission_pct賦值

elsif :old.commission_pct is null

then :new.commission_pct := 0;

else

:new.commission_pct := :old.commission_pct + 0.05;

end if;

end;

說明:

1、這兩個變數只有在使用了關鍵字 "for each row"時才存在.且update語句兩個都有,而insert只有:new ,delect 只有:old。

2、可以使用when限制 trigger的觸發條件。

3、new的賦值動作,想一想,如果是after型別的trigger, 還允許對:new賦值嗎?  沒有

Oracle觸發器中的new和old

對於oracle觸發器中的new和old new 為乙個引用最新的列值 old 為乙個引用以前的列值 這兩個變數只有在使用了關鍵字 for each row 時才存在.且update語句兩個都有,而insert只有 new delect 只有 old createorreplacetriggertr...

mysql new mysql觸發器new和old

下面為您介紹mysql觸發器new old的相關知識,供您參考學習,如果您在mysql觸發器方面遇到過類似的問題,不妨一看,相信對您會有所幫助。mysql觸發器new old new column name 或者 old column name 這樣在技術上處理 new old column nam...

Oracle中sequenc和觸發器

oracle中的sequence即序列號,在取的時候會隨著規定增長。比如1個由1開始,每次增長1的序列號。create trigger seq user1 start with 1 increment by 1 序列號,通常被我們用於作為自動增長的id號進行使用。對於乙個user1 id,usern...