存储过程和触发器实验报告
存储过程(Stored Procere)是在大型数据库系灶散统中,一组为了完成特定功能的sql 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。手漏每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并毕辩烂赋给主变量,交由主语言进一步处理。
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。
❷ 简单说说存储过程与触发器的概念与作用
存储过程就是一个sql的程序集 可以包含多个SQL语句 并可以附带各种逻辑判断及处理
触发器 就类似于程序里的事件触发
只是这里通常是某个字段的改变 某个表插入了数据 或者删除某些数据
以上这些处理引发的另外一些表数据的改变
❸ 存储过程与触发器有什么不同
首先介绍一下触发器:
触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或 DELETE。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。例如,可以控制是否允许基于顾客的当前帐户状态插入定单。
触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。有关详细信息,请参见表关系。
使用触发器的优点
触发器的优点如下:
触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。
触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。
触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。
再介绍存储过程:
存储过程(Stored Procere)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。总的来说,存储过程具有以下一些优点:
◆存储过程允许标准组件式编程
◆存储过程能够实现较快的执行速度
◆存储过程能够减少网络流量
◆存储过程可被作为一种安全机制来充分利用
使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:
允许模块化程序设计。
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
允许更快执行。
如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。
减少网络流量。
一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
可作为安全机制使用。
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限
❹ SQL里中存储过程和触发器,如何创建
触发器是一种特殊的存储过程,
2.触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
3.触发器通常用于强制业务规则
4.触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束
5.可执行复杂的SQL语句(if/while/case)DELETE 触发器
INSERT 触发器
UPDATE 触发器/*----------Insert 插入 触发器------------*/
Create Trigger Tri_insert
on students /*针对某个表,触发器是建立在表关系上的*/
for insert /*采用的是哪种触发器*/
as
declare @stu_id int;
declare @stu_score varchar(200);
select @stu_id=s_id from inserted /*这里的Inserted 是在创建触发器时候 系统自动创建的内存表*/
insert into student_Score(s_id,ss_score)values(@stu_id,'100')go
--就是插一条数据进入students中,Tri_insert触发器就会自动在student_Score插入相关的学生的一条分数的数据
insert into students(s_name,s_classId) values('黄驰',6)select * from student_Score
❺ 数据库存储过程、函数、触发器的区别
存储过程和函数的区别:
1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4. 当存储过程和函数被执行的时候,SQL Manager会到procere cache中去取相应的查询语句,如果在procere cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
Procere cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procere cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。
触发器、存储过程和函数三者有何区别:
触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;
在什么时候用触发器?要求系统根据某些操作自动完成相关任务。
什么时候用存储过程?
存储过程就是程序,它是经过语法检查和编译的SQL语句,所以运行特别快。
存储过程和用户自定义函数具体的区别
先看定义: 存储过程存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 可以在单个存储过程中。
❻ SQL里中存储过程和触发器,如何创建
存储过程可以直接用sql语句创建,触发器可以在表修改中创建
Create
Procere
name
As