^`
《数据库系统》实验报告七
学号 实验名称 准备材料 扩展实验 实验环境 实验目的 实验内容及步骤 触发器 姓名 实验时间 实验学时 2014-12-31 2 1. SQL Plus命令手册 2. PL/SQL用户手册 3. 实验教材中实验七 1.完成触发器的定义、执行与管理操作 (此部分内容不要求在实验室完成,不用写入实验报告。) Oracle 9i(及以上版本)服务器 SQL Plus/ SQL Plus work sheet客户端 1 熟悉PL/SQL语法 2. 利用PL/SQL编程访问数据库 1. 完成实验指导书实验七所有实验内容 【训练1】 CREATE TABLE logs( LOG_ID NUMBER(10) PRIMARY KEY, LOG_TABLE VARCHAR2(10) NOT NULL, LOG_DML VARCHAR2(10), LOG_KEY_ID NUMBER(10), LOG_DATE DATE, LOG_USER VARCHAR2(15) ); ^`
CREATE SEQUENCE logs_id_squ INCREMENT BY 1 START WITH 1 MAXVALUE 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 VALUES(logs_id_squ.NEXTVAL,'EMP','INSERT',:new.empno,SYSDATE,USER); ELSIF DELETING THEN INSERT INTO logs VALUES(logs_id_squ.NEXTVAL,'EMP','DELETE',:old.empno,SYSDATE,USER); ELSE INSERT INTO logs VALUES(logs_id_squ.NEXTVAL,'EMP','UPDATE',:new.empno,SYSDATE,USER); END IF; END; INSERT INTO VALUES(8001,'MARY','CLERK',1000); COMMIT; emp(empno,ename,job,sal) ^`
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;