华南农业大学大数据库系统概念实验报告材料七

更新时间:2023-04-29 14:59:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实用文档

标准《数据库系统》实验报告七

实用文档

CREATE SEQUENCE logs_id_squ INCREMENT BY 1

START WITH 1 MAXV ALUE 9999999 NOCYCLE NOCACHE;

CREATE OR REPLACE TRIGGER DML_LOG

BEFORE --触发时间为操作前

DELETE OR INSERT OR UPDATE -- 由三种事件触发

ON emp

FOR EACH ROW -- 行级触发器

BEGIN

标准

实用文档

IF INSERTING THEN

INSERT INTO logs

V ALUES(logs_id_squ.NEXTV AL,'EMP','INSERT',:new.empno,SYSDATE, USER);

ELSIF DELETING THEN

INSERT INTO logs

V ALUES(logs_id_squ.NEXTV AL,'EMP','DELETE',:old.empno,SYSDATE, USER);

ELSE

INSERT INTO logs

V ALUES(logs_id_squ.NEXTV AL,'EMP','UPDATE',:new.empno,SYSDATE, USER);

END IF;

END;

INSERT INTO emp(empno,ename,job,sal) V ALUES(8001,'MARY','CLERK',1000);

COMMIT;

标准

实用文档

SELECT * FROM LOGS;

【练习1】修改、删除刚刚插入的雇员记录,提交后检查LOGS表的结果。

update emp

set sal = sal*5

where ename = 'MARY';

COMMIT;

标准

实用文档

DELETE FROM emp WHERE empno = 8001;

COMMIT;

SELECT * FROM LOGS;

标准

实用文档

【练习2】为DEPT表创建同样的触发器,使用LOGS表进行记录,并检验结果。

CREATE OR REPLACE TRIGGER DEPT_LOG

BEFORE --触发时间为操作前

DELETE OR INSERT OR UPDATE -- 由三种事件触发

ON dept

FOR EACH ROW -- 行级触发器

BEGIN

IF INSERTING THEN

INSERT INTO logs

V ALUES(logs_id_squ.NEXTV AL,'DEPT','INSERT',:new.deptno,SYSDATE, USER);

ELSIF DELETING THEN

INSERT INTO logs

V ALUES(logs_id_squ.NEXTV AL,'DEPT','DELETE',:old.deptno,SYSDATE, USER);

ELSE

INSERT INTO logs

V ALUES(logs_id_squ.NEXTV AL,'DEPT','UPDATE',:new.deptno,SYSDAT E,USER);

END IF;

END;

标准

本文来源:https://www.bwwdw.com/article/l0uq.html

Top