- 6
- 0
- 约1.19万字
- 约 36页
- 2015-12-24 发布于广东
- 举报
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)