- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.7.3 UPDATE触发器 insert into transInfo(transDate,cardID,transType,transMoney) values(GetDate(),1001 0003,存入,5000) 用户信息表-初始态 用户信息表-更新后 交易信息表—— 触发器激活前 交易信息表—— 触发器激活后 5.7.3 UPDATE触发器 用户信息表-更新失败 insert into transInfo(transDate,cardID,transType,transMoney) values(GetDate(),1001 0003,存入,50000) 5.7.3 UPDATE触发器 UPDATE触发器除了跟踪数据的变化(修改)外,还可以检查是否修改了某列的数据 使用UPDATE(列)函数检测是否修改了某列 问题: 交易日期一般由系统自动产生,默认为当前日期。为了安全 起见,一般禁止修改,以防舞弊。 分析: UPDATE(列名)函数可以检测是否修改了某列 列级UPDATE触发器 5.7.3 UPDATE触发器 -------关键代码------ CREATE TRIGGER trig_update_transInfo ON transInfo FOR UPDATE AS IF UPDATE(transDate) BEGIN print 交易失败..... RAISERROR (‘安全警告:交易日期不能修改, 由系统自动产生,16,1) ROLLBACK TRANSACTION END GO 检查是否修改了交易日期列transDate 回滚事务,撤销交易 5.7.3 UPDATE触发器 用户信息表-更新失败 Update transInfo set transDate=‘2012-10-22’ where id=12 5.8 激活触发器 触发器的执行,是由触发事件激活的,并由数据库服务器自动执行 一个数据表上可能定义了多个触发器 5.9 删除触发器 删除触发器的SQL语法: DROP TRIGGER 触发器名 ON 表名; 触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。 [例21] 删除教师表Teacher上的触发器Insert_Sal DROP TRIGGER Insert_Sal ON Teacher; 小 结 触发器在对表进行插入、更新或删除操作时自动执行 触发器通常用于强制业务规则 触发器还是一个特殊的事务单元 触发器出现错误时可以执行回滚撤销操作 触发器一般需要使用临时表:deleted表和inserted表 INSERT触发器、UPDATE触发器和DELETE触发器 定义触发器 触发器激活 下次课程内容关系数据理论 * Content Layouts 软件学院 L/O/G/O 第五章 数据库完整性 褚龙现 chulongxian@126.com 回顾--数据库完整性概述 数据库的完整性 数据的正确性和相容性 数据的完整性和安全性是两个不同概念 数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作 回顾--实体完整性 关系模型的实体完整性 CREATE TABLE中用 PRIMARY KEY定义 单属性构成的码有两种说明方法 定义为列级约束条件 定义为表级约束条件 对多个属性构成的码只有一种说明方法 定义为表级约束条件 回顾--实体完整性检查和违约处理 插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括: 1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改 2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改 回顾--参照完整性 关系模型的参照完整性定义 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码 用REFERENCES短语指明这些外码参照哪些表的主码 回顾--参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 拒绝/级连修改/设置为空值 可能破坏参照完整性 修改主码值 拒绝/级连删除/设置为空值 可能破坏参照完整性 删除元组 拒绝 修改外码值 可能破坏参照完整性 拒绝 插入元组 可能破坏参照完整性 违约处理 参照表(例如SC) 被参照表(例如Student) 回顾
文档评论(0)