oracle数据库支持的触发器,oracle数据库PL/SQL之触发器-Oracle

news/2024/7/4 1:35:21

oracle数据库PL/SQL之触发器

七)触发器    www.2cto.com

1.基本概念

两种功能:完成由数据库的完整性约束难以完成的复杂业务规则的约束;监视数据库的各种操作,实现审计功能。

触发器分为:DML触发器(对表或视图执行DML操作时触发),INSTEAD OF触发器(只定义在视图上,替代实际的操作语句),系统触发器(对数据库系统进行操作时触发,如DDL语句、启动或关闭数据库等)

触发事件: 上述触发器中括号内容都是触发事件。

触发条件: WHEN子句

触发对象:包括表、视图、模式、数据库。

触发操作:触发器自动执行的程序。

触发时机:触发器相对操作执行的时间,BEFORE/AFTER

条件谓词:INSERTING(触发器事件为INSERT时为真),UPDATING,DELETING

触发子类型:行触发和语句触发,触发中的new和old表。

2.创建触发器    www.2cto.com

CREATE OR REPLACE TRIGGER

触发条件

触发体

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;

3.执行触发器

自动执行

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;

4.删除触发器

DROP TRIGGER my_trigger;


http://www.niftyadmin.cn/n/4255176.html

相关文章

前端资源(13)

Markdown 地址 Markdown 语法说明 (简体中文版 http://wowubuntu.com/markdownmarkdown入门参考 https://github.com/LearnShare/Learning-Markdown/blob/master/README.mdgitbook https://www.gitbook.com 国外的在线markdown可编辑成书mdeditor https://www.zybuluo.com/mde…

oracle nodemanage,Oracle WebLogic Server 12c: Node Manager配置与使用

在生产环境中,WebLogic服务器实例经常会跨多个管理域(domains)、物理主机(machines)或地域(geographic locations)分开部署。Node Manager是远程启动、停止或重启管理服务器和受管服务器的工具。尽管它不是必须的,但如果你的WebLogic服务器中的应用有高可…

FND_CONCURRENT.SET_COMPLETION_STATUS(服务器端函数)

FND_CONCURRENT.SET_COMPLETION_STATUS (服务器端函数) 语法: FUNCTION fnd_concurrent.set_completion_status(status IN VARCHAR2, message IN VARCHAR2) RETURN BOOLEAN; 说明:在并发程序内调用用来设…

linux监控脚本的作用,Linux几个常用的监控脚本

下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助。1、查看主机网卡流量#!/bin/bash#network#Mike.Xuwhile : ; dotimedate %m"-"%d" "%k":"%Mdaydate %m"-"%drx_befo…

时尚工具箱

◢工具列表: ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ 一、安全辅助 01 360顽固***专杀大全 02 IE安全助手 03 金山毒霸U盘病毒专杀 04 暴力文件删除器 05 文件夹看门狗 白金版 06 翼缘在线杀毒 二、实用工具 01 PDF阅读器绿色纯…

linux-text-3

Bash的变量类型主要有:本地变量、局部变量、环境变量、位置变量和特殊变量,其中特殊变量中的 $? 这个变量随时在变化,其中保存的数据就是刚刚执行过的命令执行状态返回值执行状态返回值$?的数字含义为:0:成功执行&am…

linux常用命令(文件系统\

一、文件系统相关命令:(tty\pwd\cd\ls\file\cat\tac\echo\shutdown\wall\date\clock\hwclock\cal\which\whereis\whatis\who\w\alias\unalias\type\tree)1、pwd#pwd //显示当前工作目录。(printing work directory)2、cd#cd …

asp.net 获取网站地址(不是请求地址)

this.Request.Url.GetLeftPart(UriPartial.Authority) 可以获得http://www.baidu.com,无论是什么请求。另外,根据不同的UriPartial枚举值,可以得到path、QueryString等字符串。 一下内容来源:http://www.xueit.com/html/2009-03/2…