【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表中填加一行信息。
对修改职工工资进行合法性检查:
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;
相关文章推荐
- oracle文档第九章触发器(1)
- Oracle: 删除当前用户的所有对象(表、视图、触发器、存储过程、函数)
- 数据导入到oracle时去掉触发器可以提速
- 设置oracle主键ID的触发器
- 触发器在oracle和mysql的不同写法细节
- oracle使用八(触发器)
- Oracle之函数与触发器
- ORACLE----触发器,存储过程及JOB
- Oracle前置更新触发器
- oracle 笔记6 触发器
- ORACLE----触发器,存储过程及JOB [转]
- SQL Server 2000 程序设计学习笔记--第九章 触发器
- 写oracle行级触发器时,不能操作本表,报"表 *** 发生了变化,触发器/函数不能读"的错误的解决办法
- oracle 字段自动编号——触发器实现,非调用序列方法
- oracle备份数据库后触发器对应的表名变成t_的情况
- oracle中变异表触发器的处理。
- 在ORACLE中调试触发器
- Oracle 触发器
- ORACLE中的权限设定,建外键,序列,触发器等
- oracle 触发器 和 常用内置程序包