触发器是一种特殊类型的存储过程,主要是通过事件进行触发被自动调用执行的。而普通存储过程可以通过存储过程的名称被调用。触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。普通存储过程可能对应多个表。触发器经常用于加强数据的完整性约束和业务规则等。
一般触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。
DML触发器分为:
1、 after触发器(之后触发)
a、 insert触发器
b、 update触发器
c、 delete触发器
2、 before 触发器 (之前触发)
其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。而before 触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义before 触发器,也可以在视图上定义。
CREATE TRIGGER `<databaseName>`.`<triggerName>`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ]触发事件 >
ON [dbo]<tableName> //dbo代表该表的所有者
FOR EACH { ROW | STATEMENT }
[ WHEN < 触发条件> ] < 触发动作体 >
FOR EACH { ROW | STATEMENT } 行级触发器(多少行触发多少次) | 语句级触发器(触发一次)
用drop进行删除触发器。
存储过程:
将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
讲到这里,可能有人要问:这么说存储过程就是一堆SQL语句而已啊?
Microsoft公司为什么还要添加这个技术呢?
那么存储过程与一般的SQL语句有什么区别呢?
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
缺点
1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。
2:移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。
3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。
4: 如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。
存储过程的种类:
1.系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息
2.扩展存储过程 以XP_开头,用来调用操作系统提供的功能
3.用户自定义的存储过程,这是我们所指的存储过程
常用格式
Create procedure procedue_name
[@parameter data_type][output]
[with]{recompile|encryption}
as
ql_statement
解释:
output:表示此参数是可传回的
with {recompile|encryption}
recompile:表示每次执行此存储过程时都重新编译一次
encryption:所创建的存储过程的内容会被加密
相关推荐
SQL的存储过程、触发器等建立视图存储过程触发器函数(自定义函数)索引 视图 视图是从一个或几个基本表(或视图)导出的表。不同的是,它是一虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据...
存储过程、函数、触发器和包
存储过程,触发器,函数,很有用的哦,是培训资料里取出来的
这些是平时个人兴趣爱好收集到的易飞ERP系统触发器/函数/储存过程/视图集。适合人群:系统管理员,运维专员或鼎捷顾问等
在数据库管理中,函数、触发器和存储过程是三个重要的概念,它们极大地增强了数据处理的灵活性和效率。 **一、MySQL数据库函数** 函数是预定义的代码块,接受一个或多个参数,并返回一个值。MySQL提供了丰富的内置...
### MySQL触发器、存储过程、自定义函数、视图示例 #### 一、MySQL触发器 触发器是一种特殊类型的存储过程,它被设计为在特定事件(如INSERT、UPDATE或DELETE操作)发生时自动执行。触发器可以用来强制业务规则、...
### 自定义函数、存储过程和触发器 #### 9.1 自定义函数 自定义函数是在SQL Server中由用户自行创建的一种子程序,用于补充和扩展系统提供的内置函数功能。自定义函数的主要目的是提高代码的复用性以及解决特定...
存储过程-触发器-函数.ppt
2. 触发器中的高级特性:如BEFORE和AFTER触发器、FOR EACH ROW子句、多表触发器、自定义触发器函数等。 3. 存储过程的编写与调用:学习如何创建参数化存储过程、返回值的处理、游标的应用及异常处理机制。 4. 触发器...
根据提供的信息,我们可以深入探讨存储过程、存储函数与触发器的相关知识点。 ### 存储过程 存储过程是一种预编译的SQL代码块,它被存储在数据库中,并且可以通过简单的调用来执行复杂的逻辑操作。存储过程可以...
这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...
SQL触发器、存储过程和函数是数据库管理中的重要组成部分,它们极大地增强了数据库的功能性和灵活性。在本篇文章中,我们将深入探讨这些概念,并提供实用的示例来帮助理解它们的使用和重要性。 **SQL触发器...
"mypos"数据库是一个示例,它包含了各种存储过程和触发器函数,这些都是数据库编程的重要工具,用于自动化和优化数据操作。接下来,我们将深入探讨这些概念以及它们在mypos数据库中的应用。 首先,存储过程是预编译...
通过这些实验步骤,学生能够深入理解存储过程和触发器的工作原理及其在实际数据库应用中的作用。同时,这些操作也展示了如何在数据库管理系统中编写和管理这些数据库对象,有助于提升数据库设计和管理能力。
2. 定义存储过程或触发器:编写相应的存储过程或触发器代码。 3. 执行测试:调用存储过程或触发DML操作以触发触发器,观察和验证结果是否符合预期。 4. 错误处理:测试各种可能出现的错误情况,如输入无效、无数据...
整理一个晚上的结果,自己有所提高,希望大家也能用得到
【触发器、存储过程和函数的区别】 触发器、存储过程和函数都是数据库管理系统中的重要组件,它们各自在特定场景下发挥着不同的作用。 1. **触发器(Triggers)** - 触发器是一种特殊的存储过程,它会在特定的...
Oracle 高级语法是指在 Oracle 数据库管理系统中使用的高级语法结构,包括事务、函数、存储过程、触发器、异常等。这些语法结构是 Oracle 数据库开发和管理的核心内容,对于数据库开发者和管理员来说是必备的知识。 ...
从概念到实例教你存储过程、函数、触发器的学习 初学者也很容易学习
存储过程、触发器和函数是数据库管理系统中常用的功能,它们能够帮助我们提高数据操作的效率和安全性。以下是对这些知识点的详细说明: 1. **存储过程**: - 存储过程是一组预编译的SQL语句,可以接受输入参数,...