SQL+Server的事务、游标、存储过程及触发器.pdf
《SQL+Server的事务、游标、存储过程及触发器.pdf》由会员分享,可在线阅读,更多相关《SQL+Server的事务、游标、存储过程及触发器.pdf(15页珍藏版)》请在三一文库上搜索。
1、 1 SQL Server 的事务、游标、存储过程及触发器的事务、游标、存储过程及触发器 内容提要:本文将讲述数据库的四个重要概念:事物、游标、存储过程以及触发器。主要内容 包括事务的概念及函数、游标的概念及语句、存储过程概述及其函数、触发器概述及其函数。 关键字:事物、游标、存储过程、触发器 引言:在关系数据库系统中,事务指的是组成为独立单元的一个或多个 SQL 操作的可恢复的序 列。对数据库的任何一次读或写都是在某次事务内完成的。游标类似一个指针,指向某一个特定的 行,根据游标的当前位置,获取和修改数据库表中的当前行。存储过程是保存起来的可以接受和返 回用户提供的参数的 SQL 语句的集合
2、。触发器是一种特殊的存储过程,在用户试图对指定的表执 行指定的数据修改语句时自动执行,常常用于强制业务规则和数据完整性。 正文: 1 事务的概念及函数事务的概念及函数 在关系数据库系统中,事务指的是组成为独立单元的一个或多个 SQL 操作的可恢复的序列。对 数据库的任何一次读或写都是在某次事务内完成的。 1.1 BEGIN DISTRIBUTED TRANSACTION 功能: 指定一个分布式事务的起始。 函数原型: BEGIN DISTRIBUTED TRAN SACTION transaction_name | tran_name_variable 参数说明: 表 1 所示为 BEGIN
3、DISTRIBUTED TRANSACTION 命令参数。 表表 1 BEGIN DISTRIBUTED TRANSACTION 命令参数命令参数 参数名 含义 transaction_name 给 BEGIN TRANSACTION 上的事务指派的名称。必须符 合标识符规则,但只使用事务名称的前 32 个字符 tran_name_variable 用户定义的、含有有效事务名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量 函数返回值: 若操作失败,返回 SQL Server 错误消息,视具体情况而定。 示例: /* *代码编号:1 *功能
4、:指定一个分布式事务的起始。 *简介:事务开始,更新表 employees 的属性。 */ USE Northwind /操作 Northwind 数据库 GO BEGIN DISTRIBUTED TRANSACTION /分布式事务的开始 UPDATE employees /更新表 employees SET FirstName = McDonald WHERE HomePhone = (206) 555-9857 / 设 置 电 话 为(206) 555-9857 的 FirstName 为 McDonald COMMIT TRAN /结束事务 2 GO 运行结果:
5、 运行结果如图 1 所示。 图 1 1.2 COMMIT TRANSACTION 功能: 指明事务的结束。 函数原型: COMMIT TRAN SACTION transaction_name | tran_name_variable 参数说明: 表 2 所示为 COMMIT TRANSACTION 命令参数。 表表 2 COMMIT TRANSACTION 命令参数命令参数 参数名 含义 transaction_name Microsoft SQL Server 忽 略 该 参 数 , 由 前 面 的 BEGIN TRANSACTION 指派事务名称。必须符合标识符规则,但只 使用事务名称的
6、前 32 个字符 tran_name_variable 用户定义的、 含有有效事务名称的变量的名称。 必须用 char、 varchar、nchar 或 nvarchar 数据类型声明该变量 函数返回值: 若操作失败,返回 SQL Server 错误消息,视具体情况而定。 示例: /* *代码编号:2 *功能:指明事务的结束。 *简介:事务结束,更新表 employees 的属性。 */ USE Northwind /作 Northwind 数据库 GO BEGIN TRANSACTION /布式事务的开始 UPDATE employees /新表 employees /置电话为(206) 5
7、55-9857 的 FirstName 为 McDonald SET FirstName = McDonald WHERE HomePhone = (206) 555-9857 COMMIT go 运行结果: 运行结果如图 2 所示。 图 2 3 1.3 ROLLBACK TRANSACTION 功能: 撤销对数据库作出的所有改变,返回到事务开始之前的状态。 函数原型: ROLLBACK TRAN SACTION transaction_name | tran_name_variable | savepoint_name | savepoint_variable 参数说
8、明: 表 3 所示为 ROLLBACK TRANSACTION 命令参数。 表表 3 ROLLBACK TRANSACTION 命令参数命令参数 参数名 含义 transaction_name 给 BEGIN TRANSACTION 上的事务指派的名称。必须符合 标识符规则,但只使用事务名称的前 32 个字符 tran_name_variable 用户定义的、 含有有效事务名称的变量的名称。 必须用 char、 varchar、nchar 或 nvarchar 数据类型声明该变量 savepoint_name 是来自 SAVE TRANSACTION 语句的 savepoint_name。必须
9、 符合标识符规则。当条件回滚只影响事务的一部分时使用 savepoint_name savepoint_variable 是用户定义的、含有有效保存点名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量 函数返回值: 若操作失败,返回 SQL Server 错误消息,视具体情况而定。 示例: /* *代码编号:3 *功能:撤销对数据库作出的所有改变,返回到事务开始之前的状态。 *简介:先对数据库表做出修改,保存一个保存点,继续修改并操作数据库,在程序结束处返回 先前保存的点 percentchanged。 */ BEGIN TRANSACTI
10、ON royaltychange /事务开始 UPDATE titleauthor /更新表 titleauthor SET royaltyper = 65 /重设参数 FROM titleauthor, titles /两个表 titleauthor 和 titles 共同查询 WHERE royaltyper = 75 /更新条件 AND titleauthor.title_id = titles.title_id AND title = The Gourmet Microwave UPDATE titleauthor /同上 SET royaltyper = 35 FROM titlea
11、uthor, titles WHERE royaltyper = 25 AND titleauthor.title_id = titles.title_id AND title = The Gourmet Microwave SAVE TRANSACTION percentchanged /在事务内设置保存点 UPDATE titles 4 SET price = price *1.1 WHERE title = The Gourmet Microwave SELECT (price *royalty *ytd_sales) *royaltyper FROM title
12、s, titleauthor WHERE title = The Gourmet Microwave AND titles.title_id = titleauthor.title_id ROLLBACK TRANSACTION percentchanged /回到先前保存过的保存点 COMMIT TRANSACTION /事务结束 运行结果: 运行结果如图 3 所示。 图 3 1.4 SAVE TRANSACTION 功能: 在事务内设置保存点。 函数原型: SAVE TRAN SACTION savepoint_name | savepoint_variable 参数说明: 表 4 所示为
13、 SAVE TRANSACTION 命令参数。 表表 4 SAVE TRANSACTION 命令参数命令参数 参数名 含义 savepoint_name 指派给保存点的名称。保存点名称必须符合标识符规则,但 只使用前 32 个字符 savepoint_variable 用户定义的、含有有效保存点名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量 函数返回值: 若操作失败,返回 SQL Server 错误消息,视具体情况而定。 示例: /* *代码编号:4 *功能:撤销对数据库作出的所有改变,返回到事务保存点的状态。 *简介:先对数据库表做出
14、修改,保存一个保存点,继续修改并操作数据库,在程序结束处返回 先前保存的点 percentchanged。 */ BEGIN TRANSACTION royaltychange /事务开始 UPDATE titleauthor /更新表 titleauthor SET royaltyper = 65 /重设参数 FROM titleauthor, titles /两个表 titleauthor 和 titles 共同查询 5 WHERE royaltyper = 75 /更新条件 AND titleauthor.title_id = titles.title_id AN
15、D title = The Gourmet Microwave UPDATE titleauthor /同上 SET royaltyper = 35 FROM titleauthor, titles WHERE royaltyper = 25 AND titleauthor.title_id = titles.title_id AND title = The Gourmet Microwave SAVE TRANSACTION percentchanged /在事务内设置保存点 UPDATE titles SET price = price *1.1 WHERE title = The Gou
16、rmet Microwave SELECT (price *royalty *ytd_sales) *royaltyper FROM titles, titleauthor WHERE title = The Gourmet Microwave AND titles.title_id = titleauthor.title_id ROLLBACK TRANSACTION percentchanged /回到先前保存过的保存点 COMMIT TRANSACTION /事务结束 运行结果: 运行结果如图 4 所示。 图 4 1.5 COMMIT WORK 功能: 标志事务的结束。 函数原型: CO
17、MMIT WORK 参数说明: 表 5 所示为 COMMIT WORK 命令参数。 表表 5 COMMIT WORK 命令参数命令参数 参数名 含义 WORK Microsoft SQL Server 忽略该参数,由前面的 BEGIN TRANSACTION 指派事务名称。必须符合标识符规则, 但只使用事务名称的前 32 个字符 函数返回值: 若操作失败,返回 SQL Server 错误消息,视具体情况而定。 6 示例: /* *代码编号:5 *功能:指明事务的结束。 *简介:事务开始,更新表 employees 的属性。 */ USE Northwind /作 Nor
18、thwind 数据库 GO BEGIN TRANSACTION /布式事务的开始 UPDATE employees /新表 employees /置电话为(206) 555-9857 的 FirstName 为 McDonald SET FirstName = McDonald WHERE HomePhone = (206) 555-9857 COMMIT go 运行结果: 运行结果如图 5 所示。 图 5 1.6 ROLLBACK WORK 功能: 将用户定义的事务回滚到事务的起点。 函数原型: ROLLBACK WORK 参数说明: 表 6 所示为 ROLLBACK WORK 命令参数。
19、表表 6 ROLLBACK WORK 命令参数命令参数 参数名 含义 WORK 给 BEGIN TRANSACTION 上的事务指派的名称。必须符合 标识符规则,但只使用事务名称的前 32 个字符 函数返回值: 若操作失败,返回 SQL Server 错误消息,视具体情况而定。 示例: /* *代码编号:6 *功能:回滚到用户指定的事务。 *简介:先对数据库进行修改,但不想保存这个修改,就可以用 ROLLBACK WORK 回滚到事 务初始状态。 */ BEGIN TRANSACTION royaltychange /事务开始 USE Northwind Go 7 UP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL Server 事务 游标 存储 过程 触发器
链接地址:https://www.31doc.com/p-3331056.html