oracle 笔记6 触发器
来源:互联网 发布:广东广电网络机顶盒 编辑:程序博客网 时间:2024/04/29 22:10
--触发器 何云祥制作
create or replace trigger secure_test
before insert on test
begin
if(to_char(sysdate,'dy') in ('星期六','星期日')) or (to_char(sysdate,'hh24:mi') not between '08:00' and '18:00')
then
raise_application_error(-20500,'你只能在工作时间对test表进行操作.');
end if;
end;
--对DML都进行触发
create or replace trigger secure_test
before insert or update or delete on test
begin
if(to_char(sysdate,'dy') in ('星期六','星期日')) or (to_char(sysdate,'hh24:mi') not between '08:00' and '18:00')
then
if deleting then
raise_application_error(-20502,'你只能在工作时间对test表进行删除操作.');
elsif inserting then
raise_application_error(-20500,'你只能在工作时间对test表进行插入操作.');
elsif updating('name') then
raise_application_error(-20503,'你只能在工作时间对test表进行name更新操作.');
else
raise_application_error(-20504,'你只能在工作时间对test表进行更新操作.');
end if;
end if;
end;
--触发器中使用变量
create or replace trigger v_trig instead of
update or delete or insert on v_emp
declare
l_res varchar(20):='';
BEGIN
IF DELETING THEN
l_res:='You may delete .';
ELSIF INSERTING THEN
l_res:='You may insert.';
ELSIF UPDATING ('SALARY') THEN
l_res:='You may update.';
ELSE
l_res:='You may update.';
END IF;
insert into e_msg values(111,l_res,sysdate);
END;
--行级触发器
CREATE OR REPLACE TRIGGER restrict_salary
before INSERT OR UPDATE OF slary ON employee
FOR EACH ROW
BEGIN
IF :new.slary>1400 THEN
RAISE_APPLICATION_ERROR (-20202,'员工不能赚到这么多薪水');
end if;
END;
--使用when的行级触发器
CREATE OR REPLACE TRIGGER restrict_salary
before INSERT OR UPDATE OF slary ON employee
FOR EACH ROW
when (new.slary>1400 )
BEGIN
RAISE_APPLICATION_ERROR (-20202,'员工不能赚到这么多薪水');
END;
--启用或者禁用某个触发器:
alter trigger trigger_name disable|enable
--启用或者禁用某个对象上的所有触发器
alter table table_name disable|enable all triggers
--重新编译触发器
alter trigger trigger_name compile
--某个系统触发器
CREATE OR REPLACE TRIGGER logon_trig
AFTER drop ON SCHEMA
BEGIN
INSERT INTO e_msg values (seq_2.nextval, user||' drop', sysdate);
END;
- oracle 笔记6 触发器
- Oracle 学习笔记 触发器
- oracle触发器使用笔记
- oracle 触发器学习笔记
- Oracle触发器学习笔记
- oracle触发器使用笔记
- Oracle 触发器笔记
- oracle 笔记触发器
- oracle笔记--触发器
- oracle 触发器 学习笔记
- oracle触发器学习笔记
- oracle-触发器笔记
- Oracle触发器6-管理触发器
- oracle学习笔记_触发器
- oracle学习笔记_触发器
- oracle学习笔记_触发器
- oracle学习笔记_触发器
- oracle学习笔记_触发器
- oracle 笔记4 游标
- 在C#程序中实现插件架构
- OSCache使用指南
- oracle 笔记5 包
- 向CruiseControl中加入一个新项目 - CruiseControl step by step(3)
- oracle 笔记6 触发器
- 在Hibernate中使用分布式 OSCache
- CSS布局实例
- 庆祝CSDNblog排名跻身1000
- oracle 笔记7 pl/sql 开始
- 应用OSCache提升J2EE系统运行性能
- hibernate中对象的3种状态----瞬时态、持久态、脱管态
- C#插件构架实战 + Visual C#插件构架实战补遗
- oracle 笔记8 自定义类型