【PL/SQL】触发器示例:记录加薪
来源:互联网 发布:卖金蝶软件 编辑:程序博客网 时间:2024/05/17 01:19
首先创建一张表,用于保存薪资变化情况:
--创建加薪记录表
CREATE TABLE scott.raisedsalarylog
(
empno NUMBER(10) NOT NULL PRIMARY KEY, --员工编号
raiseddate DATE, --加薪日期
originalsal NUMBER(10,2), --加薪前薪资
raisedsal NUMBER(10,2) --加薪后薪资
);
创建触发器,当emp表中sal发生变化,就把变化记录到raisedsalarylog表中:
--定义触发器
CREATE OR REPLACE TRIGGER SCOTT.RAISESALARYCHANGE
--定义AFTER触发器,监测emp表的SAL列的更新
AFTER UPDATE OF SAL ON SCOTT.EMP
--定义行级触发器
FOR EACH ROW
--声明区
DECLARE
V_COUNT INT; --定义记录个数变量
BEGIN
--查询更新薪资的员工在raisesalarylog表中是否存在
SELECT COUNT(*)
INTO V_COUNT
FROM SCOTT.RAISEDSALARYLOG
WHERE EMPNO = :OLD.EMPNO;
IF V_COUNT = 0
--如果不存在,则插入新的记录
THEN
INSERT INTO SCOTT.RAISEDSALARYLOG
VALUES
(:OLD.EMPNO, SYSDATE, :OLD.SAL, :NEW.SAL);
ELSE
--如果存在,则更新记录
UPDATE SCOTT.RAISEDSALARYLOG
SET RAISEDDATE = SYSDATE,
ORIGINALSAL = :OLD.SAL,
RAISEDSAL = :NEW.SAL
WHERE EMPNO = :OLD.EMPNO;
END IF;
--如果出现错误,则打印出来
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
验证触发器:
SQL> update emp set sal=sal*1.12 where empno=7369;
1 row updated
SQL> select * from scott.raisedsalarylog;
EMPNO RAISEDDATE ORIGINALSAL RAISEDSAL
----------- ----------- ------------ ------------
7369 2017/8/15 1 800.00 896.00
NextAction
2017-08-15
- 【PL/SQL】触发器示例:记录加薪
- 在PL/SQL 学习当中 触发器的概念以及示例
- pl/sql 触发器
- PL/SQL --> DML 触发器
- 8.PL/SQL触发器
- PL/SQL触发器
- 触发器 ORACLE PL/SQL
- ORACLE PL/SQL触发器
- PL/SQL(七):触发器
- PL-SQL 触发器
- PL/ SQL 触发器
- ORACLE PL/SQL:触发器
- ORACLE PL/SQL 触发器
- PL/SQL 触发器简介
- PL/SQL 基础---触发器
- PL/SQL 触发器
- PL/SQL --> PL/SQL记录
- PL/SQL --> PL/SQL记录
- python open/文件操作
- 使用kotlin开发android
- Java并发编程:阻塞队列
- python--thread多线程总结
- Spring-mvc JSON解析异常
- 【PL/SQL】触发器示例:记录加薪
- 清分--清算--结算
- mac 下面idea导入git项目出现nothing to show问题解决
- 不同版本设置侵入式标题
- Java并发编程:线程池的使用
- eclispe提交代码到git
- Ubuntu 安装 mysql && Ubuntu 安装 mysql 忘记初始密码解决方法
- Linux Shell下条件语句
- Android 常见工具类封装