- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PLSQL开发课案例集
第八章 PL/Sql开发
案例8-1 掌握INSTEAD OF类型触发器的作用和使用方法
目标
了解INSTEAD OF类型触发器的作用,掌握如何使用INSTEAD OF触发器。
步骤
1.创建一个练习表new_emps
CREATE TABLE new_emps
AS
SELECT employee_id, last_name, salary, department_id, email, job_id, hire_date
FROM employees;
2.创建一个练习表new_depts
CREATE TABLE new_depts
AS
SELECT d.department_id, d.department_name,
d.location_id, sum(e.salary) tot_dept_sal
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY d.department_id, d.department_name, d.location_id;
3.创建一个视图
CREATE VIEW emp_details AS SELECT e.employee_id, e.last_name, e.salary, e.department_id, e.email, e.job_id, d.department_name, d.location_id
FROM employees e, departments d
WHERE e.department_id = d.department_id;
4.创建INSTEAD OF触发器
CREATE OR REPLACE TRIGGER new_emp_dept
INSTEAD OF INSERT OR UPDATE OR DELETE ON emp_details
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO new_emps
VALUES (:NEW.employee_id, :NEW.last_name, :NEW.salary, :NEW.department_id, :NEW.email, :New.job_id, SYSDATE);
UPDATE new_depts
SET tot_dept_sal = tot_dept_sal + :NEW.salary
WHERE department_id = :NEW.department_id;
ELSIF DELETING THEN
DELETE FROM new_emps
WHERE employee_id = :OLD.employee_id;
UPDATE new_depts
SET tot_dept_sal = tot_dept_sal - :OLD.salary
WHERE department_id = :OLD.department_id;
ELSIF UPDATING (salary)
THEN
UPDATE new_emps
SET salary = :NEW.salary
WHERE employee_id = :OLD.employee_id;
UPDATE new_depts
SET tot_dept_sal = tot_dept_sal + (:NEW.salary - :OLD.salary)
WHERE department_id = :OLD.department_id;
ELSIF UPDATING (department_id)
THEN
UPDATE new_emps
SET department_id = :NEW.department_id
WHERE employee_id = :OLD.employee_id;
UPDATE new_depts
SET tot_dept_sal = tot_dept_sal - :OLD.salary
WHERE department_id = :OLD.department_id;
UPDATE new_depts
SET tot_dept_sal = tot_dept_sal + :NEW.salary
WHERE department_id = :NEW.department_id;
您可能关注的文档
最近下载
- 古代汉语讲义(下).doc VIP
- 六三制新青岛版五年级科学上册全一册全部课件(一共25课时).pptx
- NB∕T 32035-2016 光伏发电工程概算定额.docx
- 精神科医疗pdca案例.pdf VIP
- 第二单元第2课《心灵的色彩》课件2024人美版初中美术七年级上册.ppt
- 2022年中小学心理健康课程标准.pdf
- 人教版(2024)七年级生物上册课件 2.1.1 藻类、苔藓和蕨类植物.pptx VIP
- 人教版五年级数学上册期中质量监测卷(无答案)(7).docx VIP
- 暨南大学硕士研究生入学考试《353卫生综合》近5年(2017-2021)真题.pdf
- 郭锡良古代汉语详细知识点总结.pdf VIP
文档评论(0)