数据库原理与应用SQL Server 2005项目教程电子教案郭庚麒 第九章.pptVIP

数据库原理与应用SQL Server 2005项目教程电子教案郭庚麒 第九章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.1.1 标量函数 各参数含义: 函数名称 用户定义函数的名称。函数名称必须符合标识符的规则,对其所有者来说,该名称在数据库中必须是唯一的。 @参数名称 用户定义函数的参数,使用@符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。函数最多可以有1024个参数。函数执行时每个已声明参数的值必须由用户指定,除非该参数的默认值已经定义。 标量数据类型 参数的数据类型。所有标量数据类型(包括 bigint 和 sql_variant)都可用作用户定义函数的参数。 标量返回值类型 是标量用户定义函数的返回值。标量返回值类型可以是 SQL Server 支持的任何标量数据类型(text、ntext、image、cursor 和 timestamp 除外)。 标量表达式 指定标量函数返回的标量值。 9.1.2 内嵌表值函数 9.1.3 多语句表值函数 9.1.4 修改及删除用户定义函数 ALTER FUNCTION是修改用户定义函数的语句。其语法与CREATE FUNCTION的语法类似。当创建函数时使用加密子句,则必须使用此种方法进行修改。 DROP FUNCTION是删除用户定义函数的语句,使用该语句可以从当前的数据库中删除一个或多个用户定义函数,多个函数之间用逗号分隔。 例如,删除t_team函数可写成: DROP FUNCTION t_team 9.4.2 事务处理 1.开始控制 2.提交事务 3.回滚事务 9.4.1 事务概述 事务(Transaction)是SQL Server中的执行单元,它由一系列T-SQL语句组成。事务中的操作语句可作为一个不可分割的整体,要么都执行,要么都不执行。 事务具有以下4个属性,称为ACID属性。 原子性(Atomicity):整个事务被视为一个执行单元,一个事务中对数据库的操作要么全部执行,要么全部取消。 一致性(Consistency):事务完成后,数据库必须处于一致性状态,即事务中的任何操作都不能破坏数据库的约束或规则。 隔离性(Isolation):如果有两个以上的事务同时进行,则事务可互不干扰,因为每个事务是相互隔离的。事务读取数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。 持久性(Durability):事务完成之后,它所作的修改将永远地在系统中保存下来,即使出现系统故障也将一直保持。 SQL Server以3种事务模式运行: (1)自动提交事务。系统默认每条单独的T-SQL语句都是一个事务,由系统自动开始提交。 (2)显式事务。每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK语句显式结束。 (3)隐性事务。在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK语句显式完成。 在定义事务的时候,BEGIN TRANSACTION语句要和COMMIT TRANSACTION或者ROLLBACK TRANSACTION语句成对出现。 4.设置保存点 【例9-9】查询athlete表中T001组运动员的信息,并在该表中插入一条新记录。 USE sportsmeet GO BEGIN TRANSACTION SELECT a_athleteid,a_name --查询athlete表数据 FROM athlete WHERE a_teamid=T001 SAVE TRANSACTION after_query INSERT INTO athlete(a_athleteid,a_name,a_teamid) --插入一条记录 VALUES(A00017, 陈浩, T001) IF @@ERROR!=0 OR @@ROWCOUNT=0 BEGIN ROLLBACK TRANSACTION after_query --回滚到保存点after_query COMMIT TRANSACTION PRINT 插入数据时产生错误! END COMMIT TRANSACTION 图9-3 保存点前的查询结果 图9-4 事务执行后的结果 9.5.1 触发器概述 1.触发器的类型 AFTER 触发器在触发它们的INSERT、UPDATE或DELETE语句完成后执行。如果该语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。不能为视图指定 AFTER 触发器,只能为表指定该触发器。可以为每个触发操作(INSERT、UPDATE 或 DELETE)指定多个 AFTER 触发器。 INSTEAD OF 该触发器代替触发操作执行。可在表和视图上指定 INSTEAD

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档