Oracle触发器详细介绍来源: 发布时间:星期一, 2009年3月16日 浏览:0次 评论:0
="t18">
触发器
是特定事件出现时候自动执行代码块类似于存储过程但是用户不能直接他们
功能:
1、 答应/限制对表修改
2、 自动生成派生列比如自增字段
3、 强制数据致性
4、 提供审计和日志记录
5、 防止无效事务处理
6、 启用复杂业务逻辑
开始
create trigger biufer_employees_department_id
before insert or update
of department_id
_disibledevent=>触发器组成部分:
1、 触发器名称
2、 触发语句 3、 触发器限制 4、 触发操作 1、 触发器名称 create trigger biufer_employees_department_id 命名习惯: biufer(before insert update for each row) employees 表名 department_id 列名 2、 触发语句 比如: 表或视图上DML语句 DDL语句 数据库关闭或启动,startup shutdown 等等 before insert or update of department_id _disibledevent=>触发器类型: 1、 语句触发器 2、 行触发器 3、 INSTEAD OF 触发器 4、 系统条件触发器 5、 用户事件触发器 1、 语句触发器 是在表上或者某些情况下视图上执行特定语句或者语句组上触发器能够和INSERT、UPDATE、DELETE或者组合上进行关联但是无论使用什么样组合各个语句触发器都只会针对指定语句激活次比如无论update多少行也只会次update语句触发器 例子: 需要对在表上进行DML操作用户进行安全检查看是否具有合适特权 Create table foo(a number); Create trigger biud_foo Before insert or update or delete _disibledevent=> ------ end ; [试验] 1、 修改日志表 alter table employees_log add (action varchar2(20)); 2、 修改触发器以便记录语句类型 Create or replace trigger biud_employee_copy Before insert or update or delete _disibledevent=> Who,action,when) Values( user, l_action,sysdate); End; / 3、 测试 insert o employees_copy( employee_id, last_name, email, hire_date, job_id) values(12345,’Chen’,’Donny@hotmail’,sysdate,12); select *from employees_log 0
相关文章读者评论发表评论 |