Oracle数据库(触发器、存储过程、函数、包)

2024-09-07 00:58

本文主要是介绍Oracle数据库(触发器、存储过程、函数、包),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、触发器(trigger)

推荐练习文档:

http://wenku.baidu.com/link?url=brtd9myO4XIaEjRPaRB0yWgV2_TfXmNxS6KKjB_avq7d0hPs3SknJdrs-JLtWe–H-f3q-I61HUxkcqqAFMC0z6Zf65QBbmFRB8TAlULmGS
http://www.cnblogs.com/friends-wf/p/3793417.html存储过程练习
http://blog.csdn.net/indexman/article/details/8023740/(推荐博客触发器)(强烈推荐!!!)

触发器会被编译且存储在数据库服务器中。由一个事件来启动运行,即触发器是当某个事件发生时自动隐式运行。并且触发器不能接收参数。所以运行触发器就叫触发或点火。oracle事件指的是对数据库的表进行insert、update及delete操作或对视图进行类似的操作。oracle将触发器的功能扩展到了触发oracle,如数据库的启动和关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计功能。

1、创建触发器

create [or replace] trigger 触发器名
before|after|instead of 某个事件 on 表名|视图名|database|用户名.schema
[for each row [when]]
PL/SQL块|调用过程(call procedure_name)

or replace:如果数据库已经存在同名的触发器,则替换
before|after:指定触发时间点
instead of:替换视图操作,只能为行级触发器
某个事件:指定当发生什么操作的时候,触发触发器
on:指定基于什么创建触发器
for each row [when]:表示改变每行数据时,执行一次触发器
PL/SQL块|调用过程(call procedure_name):触发器执行时,执行的代码

2、触发器分类:

关于触发器先前介绍:

before触发器:在触发语句运行前先运行触发动作

create [or replace] trigger 触发器名
before insert|delete|update on 表名
before create|drop|alter on database|用户名.schema 
[for each row [when]]
PL/SQL块|调用过程(call procedure_name)

行级触发器:当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次。指定了for each row选项。

create [or replace] trigger 触发器名
before|after|instead of insert|delete|update on 表名|视图名
for each row [when]
PL/SQL块|调用过程(call procedure_name)
在行级触发器的PL/SQL块和when子句中可以使用相关名称参照当前的新、旧列值,默认的相关名称分别为new、old。触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在when子句中则不加冒号。

触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。

(1) 替代触发器

由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。

(2) 系统触发器

ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。

(3)语句级触发器

当某触发事件发生时,该触发器只执行一次。未指定for each row选项。

create [or replace] trigger 触发器名
before|after insert|delete|update on 表名|视图名
before|after create|drop|alter on database|用户名.schema 
PL/SQL块|调用过程(call procedure_name)

其中行级触发器对DML语句影响的每个行执行一次.语句级触发器对每个DML语句执行一次,如果在TABLE表中插入的数据为500行,那么这个表上的语句级触发器只执行一次

这篇关于Oracle数据库(触发器、存储过程、函数、包)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143612

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp