数据库第章 数据编程
为了增加教师工资表的安全性,追踪用户对教师工资 表数据的修改,创建一张工资变化表sal_log用来记录相关追踪信息。 Sal_log表结构如下: create table sal_log (id varchar2(4) primary key, --主码,自动增加 eno varchar2(4) references sal_teach, --教师编号 befor_sal number, --修改之前的工资 after_sal number, --修改之后的工资 username varchar2(10), --系统当前用户 update_date date) --系统当前时间 5. 触发器编写 为了增加教师工资表的安全性,追踪用户对教师 工资表数据的修改,创建一张工资变化表sal_log用来 记录相关追踪信息。 序列的创建: create sequence LOG_ID minvalue 1 maxvalue 9999999 start with 1 increment by 1 nocache; 5. 触发器编写 定义一个触发器,实现教师工资表Teacher的工资发 生变化后就自动在工资变化表Sal_log中增加一条相应记录 create or replace trigger t3 after update on sal_teach for each row begin if (:new.sal:old.sal) then insert into sal_log values(log_id.nextval,:new.eno,:old.sal, :new.sal,user,sysdate); end if; end; 5. 触发器编写 create or replace trigger t4 after insert on sal_teach for each row begin insert into sal_log values(log_id.nextval,:new.eno,:old.sal,:new.sal,user,sysdate); end; 5. 触发器编写 6. 注意事项 编写触发器时,需要注意以下几点: 触发器不接受参数,最大为32KB。 一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。 在触发器的执行部分只能用DML语句(SELECT,INSERT,UPDATE, DELETE),不能使用DDL语句(CREATE,ALTER,DROP)。 在触发语句中不能包含事务控制语句(COMMIT,ROLLBACK, SAVEPOINT)。在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。 删除触发器 删除触发器,语法格式: DROP TRIGGER trigger_name; * * * * * * * * * * * * * * 8.3 存储过程 创建过程语法格式: CREATE [OR REPLACE] PROCEDURE Procedure_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type ] { IS | AS } 类型.变量的说明 BEGIN 执行部分 EXCEPTION 可选的异常错误处理程序 END; 8.3 存储过程 创建过程语法格式: CREATE [OR REPLACE] PROCEDURE Procedure_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type ] { IS | AS } 类型.变量的说明 BEGIN 执行部分 EXCEPTION 可选的异常错误处理程序 END; 8.3 存储过程 创建过程语法格式: CREATE [OR REPLACE] PR
原创力文档

文档评论(0)