Oracle觸發器和new old特殊變數

2021-06-14 22:20:05 字數 1305 閱讀 5919

:new --為乙個引用最新的列值;

:old --為乙個引用以前的列值; 這兩個變數只有在使用了關鍵字 "for each row"時才存在.且update語句兩個都有,而insert只有:new ,delect 只有:old;

系統中的觸發器例項:

create or replace trigger jbpm.tib_deploybymove***** before --before表示在操作完成前觸發,after表示在完成後觸發

insert --發生插入資料操作觸發

on jbpm.deploybymove***** for each row--指定觸發器每行觸發一次

declare

integrity_error exception; --使用者自定義錯誤

errno integer;

errmsg char(200);

dummy integer;

found boolean;

row_count number;

max_num deploybymove*****.num%type; --根據表的字段定義變數型別

zero_today deploybymove*****.num%type;

begin

-- column "id" uses sequence sequence_38

case

when inserting then --sql語句只能使用:new特殊變數

select sequence_38.nextval into :new.id from dual;--主鍵自增

zero_today :='0391'||to_char(sysdate,'yymmdd')||lpad(to_char(0),4,'0');--lpad函式定義字串長度 為4不足時用0補全

select count(*) into row_count from deploybymove*****;

if row_count = 0 then

max_num:=zero_today;--:=給變數賦值

else

select max(num) into max_num from deploybymove*****;

end if;

if max_num

檢視某個表的觸發器

select * from all_triggers

where table_name =upper( 'tbname ')

oracle 函式和觸發器

create orreplace function edubis.getpxfx v pxfx in varchar2 return varchar2 is pxfx varchar2 1000 begin select wm concat b.codename into pxfx from sel...

ORACLE觸發器 行級觸發器

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

Oracle觸發器介紹 行級觸發器

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