Oracle 無法更改此觸發器類的New值

2022-02-06 11:38:44 字數 1479 閱讀 2476

今天做erp維護和管理工作中遇到乙個問題,當乙個值發生變化時,指定內容的值需要發生變化,

即1、若該值由0變成1時,系統不做任何改變;

2、若該值由1變成0時,系統根據實際需求,刪除或清空該類的小項內容。

如圖:

結合該需求,筆者了解了觸發器的原理和用途,選擇運用觸發器原理來解決這一需求。

一開始,筆者未了解清楚:new的使用範疇,因此在書寫觸發器時將其寫在after之後執行,編譯時報出了「無法更改此觸發器類的new值」異常,尋思未解,於是開始尋找原因。之後才知道after時:new值只有讀的許可權,沒有寫的許可權,而before時:new有讀寫許可權,因此將after改為before,編譯成功!

sql如下:

修改前:

foreach row

begin

ifupdating then

then

:; :

; :

; :

; :

; :

;

delete

end

if;

end

if;

view code

修改後:

foreach row

begin

ifupdating then

then

:; :

; :

; :

; :

; :

;

delete

end if;

then

:; :

; :

; :

; :

; :

;

delete

end if;

:; :

; :

; :

; :

; :

;

delete

end if;

then

:; :

; :

; :

; :

; :

;

delete

end if;

then

:; :

; :

; :

; :

; :

;

delete

end

if;

end

if;

view code

觸發器。無法更改此觸發器的new值

create or replace trigger trigger cell date before insert on tbl nokia cell referencing old as oldvalue new as newvalue for each row begin select to n...

ORACLE觸發器 行級觸發器

行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸發器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例乙個簡單的...

Oracle觸發器介紹 行級觸發器

行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸 髮器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例一 個簡...