Home >Database >Mysql Tutorial >sql server 存储过程和触发器

sql server 存储过程和触发器

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 16:21:571535browse

一.存储过程 1.存储过程的分类 存储过程是一种数据库对象,存储在数据库内,可由应用程序通过一个调用执行,而且 允许用户声明变量、有条件执行,具有很强的编程功能 存储过程可以分为两类:系统存储过程、用户存储过程和扩展性存储过程 1).系统存储过程 系

   一.存储过程

  1.存储过程的分类

  存储过程是一种数据库对象,存储在数据库内,可由应用程序通过一个调用执行,而且

  允许用户声明变量、有条件执行,具有很强的编程功能

  存储过程可以分为两类:系统存储过程、用户存储过程和扩展性存储过程

  1).系统存储过程

  系统存储过程是由SQL Server系统提供的存储过程,可以作为命令执行各种操作。

  系统存储过程主要用来从系统表中获取信息,为系统管理员管理SQL Server提供帮助,

  为用户查看数据库对象提供方便。

  系统存储过程定义在系统数据库master中,其前缀是sp_。在调用时不必在存储过程前

  加上数据库名

  2).用户存储过程

  用户存储过程是指用户根据自身需要,为完成某一特定功能,在用户数据库中创建的存

  储过程。

  3).扩展存储过程

  扩展存储过程以在SQL Server环境外执行的动态链接库(DLL,Dynamic-LinkLibrar-ies)

  来实现。扩展存储过程通过前缀“xp_”来标识,它们以与存储过程相似的方式来执行。

  二.触发器

  触发器是当特定事件出现的时候,自动执行或者激活的,与连接到数据库中的用户或者应用程序无关.。一个表最多有三种不同类型的触发器,当UPDATE发生时使用一个触发器;DELETE发生时使用一个触发器;INSERT发生时使用一个触发器

  1.与存储过程的区别

  触发器与存储过程主要的区别在于触发器的运行方式。存储过程必须由用户、应用程序或者触发器来显示式地调用并执行,而触发器是当特定事件出现的时候,自动执行或者激活的,与连接到数据库中的用户或者应用程序无关

  注意: 尽管触发器的功能强大,但是它们也可能对服务器的性能很有害。因此,要注意不要在触发器中放置太多的功能,因为它将降低响应速度,使用户等待的时间增加

  2.触发器的分类

  1). DDL 触发器

  DDL触发器当服务器或者数据库中发生数据定义语言(DDL)事件时将被调用

  2). DML 触发器

  DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作

  3.两种特殊的表:DELETED表和INSERTED表

  SQL Server 2008为每个触发器语句都创建了两种特殊的表:DELETED表和INSERTED表。

  这是两个逻辑表,由系统来自创建和维护,,用户不能对他们进行修改。他们存放在内存而不

  是数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后,

  与该触发器相关的这两个表也会被删除

  DELETE表存放由执行DELETE或者UPDATE语句而要从表中删除的所有行。在执行DELE

  TE或者UPDATE操作时,被删除的行从触发触发器的表中被移动到DELETE表,这两个表不

  会有共同的行。

  INSERT 表存放由执行INSERET或者UPDATE语句而要向表中插入的所有行。在执行INS

  ERT或者UPDATE事务中,新的行同时添加到触发触发器的表和INSERT表中,INSERT表的内

  容是触发触发器的表中新行的副本。

  注意: 一个UPDATE事务可以看作先执行一个DELETE 操作,再执行一个INSERT操作,旧的行首先被移动到DELETE 表,然后新行同时插入触发触发器的表和INSERT表。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn