【Oracle强化】⑨第九章 触发器

来源:互联网 发布:遥感原理与应用 知乎 编辑:程序博客网 时间:2024/06/05 03:33
1.编写触发器实现如下功能:
对修改职工工资进行合法性检查:
a.修改后的工资大于修改前的工资
b.工资增量不能超过原工资的10%
c.目前部门号为10号部门的员工不涨工资
 
2.用触发器生成一个主键,员工编号的主键
  ‘NEU’ +员工参加工作时间+员工序号
   neu2012033111125
   自动生成添加主键。
3、创建一个表tmp_table,包含empno、ename、sal_old、sal_new、job五列信息
   在emp表上创建一个update行触发器,当新的薪水小于原有的薪水时,在tmp_table表中填加一行信息。

9.2DML触发器 9.2.1DML语句触发器1、CREATE OR REPLACE PROCEDURE secure_dml IS BEGIN IF (TO_CHAR(SYSDATE, 'DY') in ('星期六','星期日')) or (TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:45' AND '17:30') THENRAISE_APPLICATION_ERROR (-20205, '你只能在正常的办公时间改变数据'); END IF; END secure_dml;1)、 CREATE OR REPLACE TRIGGER secure_prod BEFORE INSERT OR UPDATE OR DELETE ON dept BEGIN secure_dml; END secure_prod; 2)、 INSERT INTO dept VALUES (50,’dep50’,’shenyang’);9.2.2DML行触发器1、Create table tmp_table(Empnonumber(4),Enamevarchar2(10),Sal_oldnumber(7,2),Sal_newnumber(7,2),Job varchar2(10));2、Create or replace trigger sal_emp after update  on emp for each rowBeginif(:new.sal <:old.sal) theninsert into tmp_table values(:old.empno,:old.ename,:old.sal,:new.sal,:old.job);end if;End;update emp set sal=2000;


0 0
原创粉丝点击