您的位置:首页 > 数据库 > Oracle

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

2014-08-09 09:26 169 查看
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') THEN
RAISE_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(
Empno	number(4),
Ename	varchar2(10),
Sal_old	number(7,2),
Sal_new	number(7,2),
Job		 varchar2(10));
2、
Create or replace trigger sal_emp
after update  on emp
for each row
Begin
if(:new.sal <:old.sal) then
insert into tmp_table values(:old.empno,:old.ename,
:old.sal,:new.sal,:old.job);
end if;
End;
update emp set sal=2000;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: