源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ORACLE PL/SQL 触发器编程篇介绍

  • 时间:2020-10-18 15:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ORACLE PL/SQL 触发器编程篇介绍
[b]1.基本概念[/b] 两种功能:完成由数据库的完整性约束难以完成的复杂业务规则的约束;监视数据库的各种操作,实现审计功能。 触发器分为:DML触发器(对表或视图执行DML操作时触发),INSTEAD OF触发器(只定义在视图上,替代实际的操作语句),系统触发器(对数据库系统进行操作时触发,如DDL语句、启动或关闭数据库等) 触发事件: 上述触发器中括号内容都是触发事件。 触发条件: WHEN子句 触发对象:包括表、视图、模式、数据库。 触发操作:触发器自动执行的程序。 触发时机:触发器相对操作执行的时间,BEFORE/AFTER 条件谓词:INSERTING(触发器事件为INSERT时为真),UPDATING,DELETING 触发子类型:行触发和语句触发,触发中的new和old表。 [b]2.创建触发器[/b]
[u]复制代码[/u] 代码如下:
CREATE OR REPLACE TRIGGER<触发器名>
触发条件 触发体
[u]复制代码[/u] 代码如下:
CREATE TRIGGER my_trigger --定义一个触发器my—trigger BEFORE INSERT or UPDATE of TID,TNAME on TEACHERS FOR each row WHEN(new.TNAME='David') --这一部分是触发条件 DECLARE --下面这一部分是触发体 teacher_id TEACHERS.TID%TYPE; INSERT_EXIST_TEACHER EXCEPTION; BEGIN SELECT TID INTO teacher_id FROM TEACHERS WHERE TNAME=new.TNAME; RAISE INSERT_EXIST_TEACHER; EXCEPTION --异常处理也可用在这里 WHEN INSERT_EXIST_TEACHER THEN INSERT INTO ERROR(TID,ERR) VALUES(teacher_id,'the teacher already exists!'); END my triqqer;
[b]3.执行触发器[/b] 自动执行
[u]复制代码[/u] 代码如下:
CREATE TRIGGER my_trigger1 AFTER INSERT or UPDATE or DELETE on TEACHERS FOR each row; DECLARE info CHAR(10); BEGIN IF inserting THEN --如果进行插入操作 info:='INSERT'; ELSIF updating THEN --如果进行修改操作 info:='Update'; ELSE--如果进行删除操作 info:='Delete'; END IF; INSERT INTO SQL_INFO VALUES(info); --记录这次操作信息 END my_trigger1;
[b]4.删除触发器[/b]
[u]复制代码[/u] 代码如下:
DROP TRIGGER my_trigger;
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部