sql server 存储过程和触发器



.储过

1.存储过程的分类

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

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

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

1).系统存储过程

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

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

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

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

加上数据库名

2).用户存储过程

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

储过程。

3).扩展存储过程

扩展存储过程以在SQL Server环境外执行的动态链接库(DLLDynamic-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表。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值