- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
触发器事务自定义函数
Advance SQL / Chapter 9/ 用户定义函数创建方法 CREATE FUNCTION 函数名称 ([@参数名称 数据类型][,……n]) RETURNS 返回值的数据类型 AS BEGIN 函数内容 RETURN 返回的数据表达式 END Version 3.0 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程 触发器可以确保数据的完整性和一致性 触发器概念 触发器可以通过企业管理器或者查询分析器来创建。 语法: 创建触发器 CREATE TRIGGER 触发器名称 ON 表/视图--触发器表或触发器视图 [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] AS T-Sql语句 触发器可以与对表执行的三个操作(INSERT、 UPDATE 和 DELETE)相关联 触发器可以引用视图或临时表, 一个触发器只应用于单独一个表或视图 WITH ENCRYPTION选项可用于对用户隐藏触发器 的定义。但是,加密的触发器无法进行解密 触发器可以包含任意数量的 SQL 语句 创建触发器的指导原则1-2 默认情况下,只有数据库所有者才具有创建触发器的权限。此权限不可转让。 触发器只能在当前数据库中创建。 但是,触发器可以引用其他数据库中的对象。 创建触发器的指导原则2-2 触发器可以访问两个逻辑表 Inserted表 Deleted表 Inserted 和Deleted 表包含更新前和更新后的数据映像 Inserted和Deleted表中不包含表中不受更新操作 影响的数据 使用 Inserted 和 Deleted 表 触发器的触发类型 insert触发器 update触发器 delete触发器 当试图向表中插入数据时,将执行 INSERT 触发器 INSERT 触发器执行下列操作: 向Inserted表中插入一个新行的副本。 检查Inserted 表中的新行,确定是否要阻止该插入操作。 如果所插入的行中的值是有效的,则将该行插入到触发器表中。 INSERT 触发器 当试图从表中删除数据时,将执行DELETE 触发器。 DELETE触发器执行下列操作: 从触发器表中删除行。 将删除的行插入到Deleted表中。 检查Deleted表中的行,以确定是否需要或应如何执行触发器操作。 DELETE 触发器 当试图更新表中的数据时,将执行UPDATE触发器 UPDATE 触发器执行下列操作: 将原始数据行移到逻辑Deleted表中 将一个新行插入Inserted表中,然后插入触发器表中 计算Deleted表和Inserted表中的值以确定是否需要进行干预 UPDATE 触发器 CREATE TRIGGER update_trigger1 ON goods FOR UPDATE AS /*检查商品编号列或商品类型编号列是否被修改,如果有某些列被修改了,则取消修改操作*/ IF UPDATE(goods_id) OR UPDATE(goods_type_id) BEGIN PRINT 违背数据的一致性 ROLLBACK TRANSACTION END GO 例:在shop数据库的goods表上创建一个UPDATE触发器,若对商品编号列或商品类型编号列修改,则给出提示信息,并取消修改操作。 IF EXISTS (SELECT name FROM sysobjects WHERE name = reminder AND type = TR) DROP TRIGGER reminder GO CREATE TRIGGER reminder ON goods FOR INSERT, UPDATE ,delete AS BEGIN DECLARE @str char(50) SET @str=TRIGGER IS WORKING PRINT @str END GO 例:对于shop数据库,如果在goods表中添加或更改数据,则向客户端显示一条“TRIGGER IS WORKING”的信息。 不能在触发器中使用的 SQL 语句 RESTORE DATABASE LOAD LOG DISK RESIZE DISK INIT RESTORE LOG RECONFIGURE LOAD DATABASE DROP DATABASE ALTER DATABASE CREATE DATABASE SQL 语句 1.创建触发器 (1)通过界面方式只能创建DML触发器。 以在表XS上创建触发器为例,利用“对象资源管理器”创建DML触发器步骤如下:启动“SQL Server Management Studio”,在“对象资源管理器”中展开“
文档评论(0)