Oracle觸發器案例

2021-08-03 22:52:12 字數 1121 閱讀 2907

--建立表

create table emp (empno number , ename varchar2(32) ,str   varchar2(32) );

create or replace trigger emp_trigger

before insert on emp

for each row

declare

--ps+年月日+五位流水號

ps_number      varchar2(50); --評審單號

year_month_day varchar2(32);

begin

--查詢最大評審單號 +1 ,得下乙個評審單號

select substr(max(e.str), 3, length(max(e.str)) - 2) + 1

into ps_number

from emp e

where e.str like '%' || 'ps' || to_char(sysdate, 'yyyymmdd') || '%'

order by e.str desc;

--如果查詢的評審單號為空,則從00001開始

if ps_number is null then

select to_char(sysdate, 'yyyymmdd') into year_month_day from dual;

ps_number := year_month_day || '00001';

end if;

--如果插入的資料評審單號為空時,則取新生成的單號

if :new.str is null then

:new.str := 'ps' || ps_number;

end if;

end;

--插入資料測試

insert into emp (empno, ename) values ('10', 'wang莉');

insert into emp (empno, ename) values ('11', 'qq莉2');

insert into emp (empno, ename) values ('12', 'ww莉3');

commit;

--檢視結果,單號已生成插入

oracle 觸發器案例

例1 建立乙個觸發器,當職工表 emp 表被刪除一條記錄時,把被刪除記錄寫到職工表刪除日誌表中去。create table emp his as select from emp where 1 2 create or replace trigger tr del emp before delete ...

oracle序列及觸發器案例

oracle在建立表時和其他的資料庫有點不一樣,如sql server可以在int型別的字段後加上identity 1,1 該字段就會從1開始,按照 1的方式自增,將這個字段設定為主鍵,有利於我們進行資料的插入操作。mysql中可以使用 auto increment 即可。但是oracle有點麻煩,...

ORACLE觸發器 行級觸發器

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