第9章使用触发器和事务
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server2005数据库应用技术
9.2.2 修改触发器 (3)使用T-SQL语句修改触发器正文 使用T-SQL语句ALTER TRIGGER可以修改触发器,具 体语法形式如下: ALTER TRIGGER 触发器名 ON {表名 | 视图名} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF}{[INSERT], [UPDATE], [DELETE]} AS IF UPDATE(列名) [{AND | OR} UPDATE(列名)…] SQL语句
触发器的主要作用是实现由主键和外键所不能保 证的复杂的参照完整性和数据一致性。除此之外, 触发器还有其它许多不同的功能。
– – – – – 执行更加复杂的约束操作。 级联更改数据库中相关的数据表。 返回自定义的错误信息。 比较数据库修改前后数据的状态。 维护规范化数据。
SQL Server2005数据库应用技术
触发器被创建以后,它的名称存放在系统表 sysobjects 中 , 它 的 创 建 源 代 码 存 放 在 syscomments系统表中。 (1)查看表中的触发器信息 可以使用系统存储过程sp_helptrigger查看指定 表中所定义的触发器及它们的类型。 (2)查看触发器定义 可以使用系统存储过程sp_helptext查看指定触 发器的定义文本。
SQL Server2005数据库应用技术
9.3.6 隐式事务 隐式事务是指在当前事务提交或回滚后,自动启动新 事务。当SQL Server首次执行下表所示语句时,自动启动 一个事务。使用SET IMPLICIT_TRANSACTIONS OFF语 句可以关闭隐式事务模式。
CREATE DROP OPEN ALTER TABLE INSERT FETCH DELETE REVOKE SELECT GRANT UPDATE TRUNCATE TABLE
SQL Server2005数据库应用技术
9.3 了解事务
SQL Server2005数据库应用技术
9.3.1 事务
事务是由一系列的数据查询操作或更新操作构成, 可以看作单个处理单元。如果某一事务执行,则在 该事务中的所有操作均会执行,记录在数据库中, 成为持久的组成部分。如果遇到问题,则必须全部 取消或回滚,所有处理均被清除。
SQL Server2005数据库应用技术
9.2.1 查看触发器信息
(3)查看触发器的所有者和创建时间 可以使用系统存储过程sp_help查看触发器的所 有者和创建时间。
SQL Server2005数据库应用技术
9.2.2 修改触发器
(1)使用SSMS修改触发器定义 使用SQL Server Management Studio修改触发 器定义的基本步骤演示。 (2)使用存储过程sp_rename重命名触发器 使用存储过程sp_rename重命名触发器的语法 格式为: sp_rename 原名称, 新名称
SQL Server2005数据库应用技术
9.3.5 显式事务
(2)提交事务 提交事务的基本语法格式如下: COMMIT TRANSACTION [事务名] 该语句标志一个成功的显式事务(或隐式事务)的完成。 (3)回滚事务 回滚事务的基本语法格式如下: ROLLBACK TRANSACTION [事务名] 该语句将显式事务(或隐性事务)回滚到事务的起 点或事务内的某个保存点。
9.1 创建触发器
SQL Server2005数据库应用技术
9.1.1 触发器
在SQL Server中,触发器是一种通过事件进行 触发而被执行的专用类型的存储过程. 触发器是一个功能强大的工具,它与表格紧密 相连,在表中数据发生变化时自动强制执行。
SQL Server2005数据库应用技术
9.1.2 触发器的作用
SQL Server2005数据库应用技术
9.1.3 触发器的分类
DML触发器又分为AFTER触发器和INSTEAD OF触 发器两种类型。
– AFTER触发器在数据变动(INSERT、UPDATE和 DELETE操作)完成以后才被触发。 – INSTEAD OF触发器在数据变动以前被触发,并取代 变动数据的操作,而去执行触发器定义的操作。
SQL Server2005数据库应用技术
9.2.4 禁止和启用触发器
使用T-SQL语句禁止和启用触发器的基本语法 如下: ALTER TABLE 表名 {ENABLE | DISABLE}TRIGGER {ALL | 触发器名 [,…n]} 其中:
– ENABLE:启用触发器。 – DISABLE:禁止触发器。 – ALL:指定启用或禁止表中所有的触发器。
SQL Server2005数据库应用技术
9.2.3 删除触发器
(1)使用SQL语句的DROP TRIGGER删除指 定的触发器,其语法格式为: DROP TRIGGER 触发器名 (2)删除触发器所在的表时,SQL Server将 自动删除与该表相关的触发器。 (3)在“对象资源管理器”中右键单击需要删 除的触发器名称,在弹出的菜单中选择“删除”命 令即可。
SQL Server2005数据库应用技术
9.3.3 事务模式 (1)自动提交事务:每条单独的语句都是一个事务。 (2)显式事务:每个事务均以BEGIN TRANSACTION 语句显式开始,以COMMIT或ROLLBACK语句显式结束。 (3)隐式事务:在前一个事务完成时新事务隐式启动, 但每个事务仍以COMMIT或ROLLBACK语句显式完成。 (4)批处理级事务:只能应用于多个活动结果集 (MARS),在MARS会话中启动的T-SQL显式或隐式事务变为 批处理级事务。当批处理完成时没有提交或回滚的批处理级 事务自动由SQL Server 进行回滚。
SQL Server2005数据库应用技术
9.1.5 使用SSMS创建触发器
使用SQL Server Management Studio创建触发 器的基本步骤演示。
SQL Server2005数据库应用技术
9.2 管理与维护触发器
SQL Server2005数据库应用技术
9.2.1 查看触发器信息
SQL Server2005数据库应用技术
SQL Server2005数据库应用技术
9ቤተ መጻሕፍቲ ባይዱ1.4 使用T-SQL语句创建触发器
使用T-SQL语句CREATE TRIGGER创建触发 器的基本语法格式如下: CREATE TRIGGER 触发器名 ON {表名 | 视图名} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF}{[INSERT], [UPDATE], [DELETE]} AS IF UPDATE(列名) [{AND | OR} UPDATE(列名)…] SQL语句
SQL Server2005数据库应用技术
9.3.4 自动事务
自动事务模式为系统默认的事务管理模式。在自 动事务模式下,每个 T-SQL 语句在成功执行完成后, 都被自动提交。如果遇到错误,则自动回滚该语句。
SQL Server2005数据库应用技术
9.3.5 显式事务
显式事务由用户在其中定义事务的启动和结束。 (1)建立事务 建立事务的基本语法格式如下: BEGIN TRANSACTION [事务名] 该语句标记一个显式本地事务的起始点。
9.1.3 触发器的分类
在SQL Server 2005中,触发器可以分为DML 触发器和DDL触发器两种类型。
– DDL触发器是当数据库服务器中发生数据定义语言 (DDL)事件时执行的存储过程。这些事件主要对应 于T-SQL中的CREATE、ALTER 和 DROP 语句,以 及执行类似DDL操作的某些系统存储过程。 – DML触发器是当数据库服务器中发生数据操作语言 (DML)事件时执行的存储过程。DML事件包括在指 定表或视图中修改数据的 INSERT 语句、UPDATE 语 句或 DELETE 语句。
SQL Server2005数据库应用技术
9.3.2 事务的特征 – 原子性:事务必须是原子工作单元,对于其数据修改, 要么全都执行,要么全部不执行。 – 一致性:事务结束时,必须使所有数据处于一致性状 态。 – 隔离性:为了提高事务的吞吐率,大多数DBMS允许 同时执行多个事务,就像分时操作系统为了充分利用 系统资源,同时执行多个进程一样。 – 持久性:事务完成之后,它对于系统的影响是永久性 的,该修改即使出现系统故障也将一直保持。
SQL Server2005数据库应用技术
9.1.4 使用T-SQL语句创建触发器
其中各参数含义如下:
– WITH ENCRYPTION:加密触发器的文本。 – AFTER:指定在对数据表的相关操作之后,触发器被 触发。 – INSTEAD OF:指定执行触发器而不是执行触发语句, 从而替代触发语句的操作。 – {[INSERT], [UPDATE], [DELETE]}:指定在表或视图 上执行哪些数据修改语句时激活触发器的关键字,必 须至少指定一个选项。 – IF UPDATE:指定对表内某列做增加或修改内容时, 触发器才起作用,它可以指定两个以上列,列名前可 以不加表名。 – SQL语句:指定触发器执行的条件和动作。