八、触发器
触发器在数据库中以独立的对象存储,它与存储过程不同的是,存储过程通过其他程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。oracle事件指的是对数据库的表进行insert、update及delete操作或对视图进行类似的操作。oracle将触发的功能扩展到了触发oracle,如数据库的启动与关闭等。
触发器的组成:触发事件;触发时间;触发器本身;触发频率。
语句级(statement)触发器:是指当某触发事件发生时,该触发器只执行一次;行级(row)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次。
触发器的限制:1、create trigger语句文本的字符长度不能超过32kb;2、触发器体内的select语句只能为select...into...结构,或者为定义游标所使用的select语句;3、触发器中不能使用数据库事务控制语句commit;rollback,svaepoint语句;4、由触发器所调用的过程或函数也不能使用数据库事务控制语句;
例1:
create table emp_his as select * from emp where 1=2;
create or replace trigger del_emp_trigger
before delete on emp for each row
begin
insert into emp_his(deptno,empno,ename,job,mgr,sal,comm,hiredate)
values(:old.deptno,:old.empno,:old.ename,:old.job,:old.mgr,:old.sal,:old.comm,:old.hiredate);
end;
替代(instead of)触发器:instead of选项使oracle激活触发器,而不执行触发事件。只能对视图和对象视图建立instead of触发器,而不能对表、模式和数据库建立instead of触发器。
例:
create or replace view emp_view as
select deptno,count(*) total_employeer,sum(sal) total_salary from emp group by deptno;
create or replace trigger emp_view_delete
instead of delete on emp_view for each row
begin
delete from emp where deptno=:old.deptno;
end emp_view_delete;
delete from emp_view where deptno=10;
系统事件触发器:
oracle提供的系统事件触发器可以在ddl或数据库系统上被触发。ddl指的是数据定义语言,如create、alter及drop等。而数据库系统事件包括数据库服务器的启动或关闭,用户的登录与退出、数据库服务错误等。
系统事件触发器既可以建立在一个模式上,又可以建立在整个数据库上。当建立在模式(schema)之上时,只有模式所指定用户的ddl操作和它们所导致的错误才激活触发器,默认时为当前用户模式。当建立在数据库(database)之上时,该数据库所有用户的ddl操作和他们所导致的错误,以及数据库的启动和关闭均可激活触发器。要在数据库之上建立触发器时,要求用户具有administrator database trigger权限。
如果在触发器内调用其他函数或过程,当这些函数或过程被删除或修改后,触发器的状态将被标识为无效。当dml语句激活一个无效触发器是,oracle将重新编译触发器代码,如果编译时发生错误,这将导致dml语句执行失败。
删除触发器:drop trigger trigger_name;
当删除表或视图时,建立在这些对象上的触发器也随之消失。
触发器的状态:有效状态(enable)、无效状态(disable)。
改变数据库trigger的状态:alter trigger emp_view_delete disable;
改变与指定表相关的所有触发器的使用状态:alter table emp disable all triggers;
分享到:
相关推荐
在本教程中,我们将深入探讨PL/SQL的基础知识,包括其与SQL的关系、程序设计的基本结构和组成元素。 ### SQL与PL/SQL SQL(Structured Query Language)是用于管理关系数据库的标准语言,主要负责数据查询、更新和...
PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行...通过学习和掌握PL/SQL,开发者可以构建高效、复杂的数据库应用程序。
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
这本“PL/SQL超级笔记”显然是针对初学者设计的,旨在帮助他们掌握这一强大的数据库编程工具。 PL/SQL的组成部分包括声明部分、执行部分和异常处理部分。声明部分用于定义变量、常量、游标等;执行部分包含SQL语句...
PL/SQL部分未在提供的内容中出现,但它是Oracle的扩展,允许编写存储过程、函数、触发器等,增强了SQL的功能。它结合了SQL查询与过程式编程语言,使数据库管理更加灵活和高效。 这些笔记提供了学习SQL和Oracle...
PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL(结构化查询语言)与过程式编程语言相结合,为数据库管理提供了强大的编程能力。以下是对PL/SQL的一些核心知识点...
Oracle笔记(PL-SQL)是关于数据库管理和编程的一个重要主题,主要聚焦于Oracle数据库系统中的结构化查询语言(SQL)的扩展——PL/SQL。PL/SQL是一种过程化语言,结合了SQL的功能,使得开发者能够编写复杂的数据库应用...
总的来说,"oracle-PROC编程学习笔记"将带你深入探索Oracle数据库和C语言的结合,帮助你掌握在C程序中高效操作数据库的技术,这对于开发高性能的数据库应用程序非常有帮助。通过学习和实践,你将能够编写出既快速又...
Oracle PL/SQL编程是Oracle数据库开发中的核心技能之一,它是一种强大的过程式语言,用于在Oracle环境中编写存储过程、函数、触发器等数据库程序。第五版的《Oracle PL SQL Programming》是一本深入学习PL/SQL的权威...
PlSql学习笔记 Oracle_PL/SQL是甲骨文数据库管理系统中的一种编程语言,用于创建...PlSql学习笔记涵盖了创建表、添加、修改、删除数据、新增的数据类型和PL/SQL语言的基本知识点,对于提高自己的能力水平非常有帮助。
PL/SQL 学习笔记总结 PL/SQL 是 Oracle 在标准 SQL 语言上的扩展,提供了更多的编程功能,例如定义变量和常量、使用条件语句和循环语句、例外处理等。使用 PL/SQL 可以提高开发效率和数据库性能。 PL/SQL 的优点 ...
### 精通Oracle 10g PL/SQL编程学习笔记 #### 一、PL/SQL综述 **1.1 PL/SQL的功能与作用** PL/SQL (Procedural Language for SQL) 是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据处理能力与过程化...
这些只是PL/SQL学习笔记的部分内容,实际使用中还会涉及游标、子程序、异常处理、动态SQL等多个方面。掌握PL/SQL能帮助开发者更有效地管理和操作Oracle数据库,实现复杂的数据处理任务。通过不断实践和学习,你可以...
此外,通过将业务逻辑封装在PL/SQL子程序中,可以实现模块化的程序设计,使得代码更易于维护和复用。例如,可以创建一个过程或函数来处理特定的业务规则,然后在多个地方调用这个子程序。 PL/SQL还提供了异常处理...
本文将深入探讨PL/SQL程序设计中的一些关键知识点,包括基本语法、记录类型、流程控制、游标使用、异常处理、存储函数与存储过程以及触发器。 1. PL/SQL基本语法: PL/SQL程序由声明、执行和异常处理三部分组成。...
这些笔记涵盖了SQL和PL/SQL的基础知识,适合初学者了解和掌握数据库操作的基本概念和语法。随着经验的积累,开发者可以深入学习高级特性和最佳实践,如性能优化、并发控制、数据库设计等,以提升在Oracle数据库环境...
**PL/SQL程序设计简介** PL/SQL是Oracle数据库中的一种结构化查询语言,它将SQL与过程式编程语言相结合,提供了更强大的数据库操作能力。本笔记版详细介绍了PL/SQL的设计与应用,适合初学者及有一定基础的开发者...
- **PL/SQL** (Procedural Language for SQL) 是 Oracle 数据库的一种扩展,它允许用户在 SQL 的基础上进行更复杂的程序设计。 - **特性**: - **变量与常量定义**:支持变量和常量的定义,增强数据处理能力。 - *...