Orcale資料庫觸發器

2021-08-16 22:54:21 字數 2459 閱讀 5499

什麼是觸發器

是乙個特殊的儲存過程

是完成乙個特定功能的乙個程式

是乙個與表相關聯的,儲存的plsql程式

每當乙個特定的資料操作語句 insert update delete在指定的表

上觸發時,orcale自動執行觸發器中定義的語句序列

語法

create trigger  ***x  

after insert [of 列名]

on emp

declare

begin

(執行一些動作);

end;

應用場景

1.複雜的安全性檢查

2.資料的確認

3.實現審計功能

4.完成資料的備份的同步

--觸發器

create table emp (

id number(10) primary key, --id

empname varchar2(100), --員工名

deptno number(10), --部門id

sal number(9,2) --薪水

);--安全性檢查

--禁止在非工作時間插入新員工

/* 1週末 to_char(sysdate,'day') in ('星期六','星期日')

2上班前 下班後 to_number(to_char(sysdate,'hh24')) not between 9 and 18

*/create trigger tri_emp

before insert --插入之前操作

on emp

declare

if to_char(sysdate,'day') in ('星期六','星期日') or

to_number(to_char(sysdate,'hh24')) not between 9 and 18 then

--禁止插入 滿足條件就進入異常,程式插入失敗

end if

end;

drop trigger tri_emp;

insert into emp values(3,'xiangdehua3',1,10000);

--資料確認

--漲後工資不能少於漲前的薪水

/* 代表同一條記錄

:old 表示操作該行之前的值

:new 表示操作該後之前的值

*/create trigger tri_checksalary

before update

on emp

for each row

begin

if :new.sal<:old.sal then

end if;

end;

update emp set sal = sal-1 where id =1;

--資料庫的審計--基於值的審計功能

--給員工漲工資,當漲後的薪水超過6k的時候審計員工資訊

--建立表用於儲存員工資訊

create table audit_info(

information varchar2(2000)

);/*

代表同一條記錄

:old 表示操作該行之前的值

:new 表示操作該後之前的值

*/

create or replace trigger tri_audit_emp_salry

after update

on emp

for each row

begin

if :new.sal>6000 then

insert into audit_info values(:new.empname||'的工資大於6k');

end if;

end;

update emp set sal=sal+9000 where id =1;

select * from audit_info;

--建立備份表

create table emp_backup as select * from emp;

--資料庫的備份和同步

--漲完工資後自動備份新的工資到備份表中

/*

*/create or replace trigger tri_sync_salary

after update

on emp

for each row

begin

update emp_backup set sal=:new.sal where id = :new.id;

end;

update emp set sal =sal+20000 where id =2 ;

學習自csdn和慕課老師的個人總結。

Orcale序列 觸發器

序列 重點 i.語法 create sequence序列名 引數 ii.詳解 用來生成一列自動增長的值。create sequence seq class minvalue 值 最小值 maxvalue 值 最大值 start with 起始值 increment by 值 遞增數 cache 快取...

資料庫觸發器

觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...

資料庫觸發器

最近做了個觸發器的例子 create trigger tru user on user for update asif update status begin update user set stopflag 1 from inserted where user.userid inserted.us...