什麼是觸發器
是乙個特殊的儲存過程
是完成乙個特定功能的乙個程式
是乙個與表相關聯的,儲存的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...