您的位置:首页 > 其它

存储过程和触发器的优点和缺点

2015-12-22 16:57 351 查看
首先介绍触发器

触发器是一种特殊类型的存储过程,当使用一种或者多种数据修改进行操作,在指定表中对数据进行修改时侯,会触发下面的函数,

触发器就会生效:update insiert delete 触发器可以查询其他表,可以包含很复杂的sql 语句,主要用于强制复杂的规则业务或者要求,

触发器有助于强制引用的完整性。以便于在进行删除,更新或者增加时候保留原来表中的已定义的关系,

然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。

触发器的优点介绍:

触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。

触发器可以通过数据库中的相关表进行层叠更改,

触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。

下面介绍存储过程:

存储过程是为了完成特定功能的一组sql语句集,经过编译后存储在数据库中,用户通过指定存储过程名字并且给出参数进行执行存储过程

存储过程是数据库的一个重要对象,一个良好的数据库应用程序都应该使用存储过程

存储过程的优点:

◆存储过程允许标准组件式编程

◆存储过程能够实现较快的执行速度

◆存储过程能够减少网络流量

◆存储过程可被作为一种安全机制来充分利用

使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:

允许模块化程序设计。

只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。

允许更快执行。

如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。

减少网络流量。

一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。

可作为安全机制使用。

即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限

存储过程的分类

分为五类,系统存储过程,用户定义存储过程,临时存储过程,远程存储过程,扩展存储过程.
临时存储过程又分为本地临时存储过程,全局临时存储过程.
分类
说明
系统存储过程

存储在master中,以sp开头,调用时不必加库名,如果参数是保留字或者数据库对象,用单引号包围.

用户定义存储过程

用户为完成一定的功能定义在数据库中存储过程.

临时存储过程

本地临时:#开头,放在tempdb中,连接断开之后自动删除,本库使用.

全局临时:##开头,放在tempdb中,连接断开后使用完之后自动删除,本连接的所有库可以使用.注意命名.

远程存储过程

位于远程服务器上的存储过程.通过分布式查询和execute执行.

扩展存储过程

外部程序写的存储过程,xp开头,动态链接库形式存在,也放在master

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: