大型数库概论.pptVIP

  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章 Oracle9i数据库的完整性和并发控制 9.1 完整性控制:数据库的完整性是指保证数据库中数据及语义的正确、相容和有效,防止任何对数据造成错误的操作。数据库的完整性一般包括实体完整性、参照完整性和用户自定义完整性三种,Oracle9i允许定义和实施这三种类型的完整性规则,这些规则可用完整性约束和触发器来定义。 9.1.1 完整性约束:完整性约束是指数据库中数据所具有的制约和依存规则,用以限定数据库的状态以及状态的变化。实施完整性规则的好处是: ⑴ 完整性约束可在创建和修改表时定义,对完整性规则的实施优于应用程序中的复杂编码和触发器。 ⑵ 完整性约束存储在数据字典中,任何对表的更新操作都必须遵守该表所定义的完整性约束。 ⑶ 由于可以临时禁用完整性约束,使得装载大量数据时可以避免约束检查的开销。当数据装载完成时,再启用完整性约束,任何破坏完整性约束的数据将在例外表中列出。 9.1.2 触发器 ⑴ 触发器的概念 触发器类似于过程和函数,也是一个PL/SQL命名块,但它不需显式调用,而是当相应事件发生时,激发在后台自动运行。使用触发器的好处: n? 维护不可能在表创建时通过声明进行的复杂完整性限制。 n? 通过记录修改内容和修改者来审计表中的信息。 n?当表被修改时,自动给其它需要在该表上执行操作的程序发出信号。 一个触发器一般是由触发事件、发生事件的对象、触发条件和触发器体四部分组成。触发事件可以是DML语句、DDL语句或系统事件(如数据库启动和关闭等),根据触发事件的不同,可将触发器分为DML触发器、DDL触发器、系统触发器和替代触发器四种类型。 n?DML触发器:定义在表上的触发器,由INSERT、DELETE和UPDATE等DML语句触发。创建DML触发器要明确规定执行SQL语句时机的BEFORE/AFTER选项,同时指定是行级触发器(触发语句每影响表的一行,触发器就被触发一次)还是语句级触发器(触发器只在相应语句被执行时触发一次,并不针对每一行)。 n?DDL触发器:定义在用户模式上的触发器,由CREATE、ALTER或DELETE等语句触发。 n?替代触发器:定义在视图上的触发器,由INSERT、DELETE和UPDATE等语句触发。因为直接对有些视图的INSERT、DELETE和UPDATE操作是非法的,使用替代触发器则可以将这些操作合法替代为对相应基表的操作。创建替代触发器不能加BEFORE/AFTER选项。 n?系统触发器:定义在数据库上的触发器,由表9.1所示的系统事件触发。 ⑵ 创建触发器: 语法如下: CREATE OR REPLACE TRIGGER 触发器名 BEFORE|AFTER|INSTEAD OF 触发事件 ON DATABASE|用户模式名|表名|视图名| [REFERENCING OLD AS 旧值别名| NEW AS 新值别名|PARENT AS 父表别名] [FOR EACH ROW] [WHEN 触发条件] 触发器体; END触发器名; 上面语法中的主要参数描述如下: n BEFORE|AFTER|INSTEAD OF:BEFORE表示在执行触发语句之前触发,AFTER表示在执行触发语句之后触发,INSTEAD OF表示创建替代触发器。 n REFERENCING:行级触发器的触发器体可以引用一些特定的条件谓词INSERTING、DELETING和UPDATING。OLD指定在条件谓词执行前引用字段旧值时要使用的名称;NEW指定在条件谓词执行后引用字段新值时要使用的名称;如果触发器定义在参照表上,PARENT指定被参照表的当前行。 n FOR EACH ROW:指定为行触发器。 n WHEN:指定触发条件。但该语句不能在语句级触发器中使用。 n 触发器体可以是PL/SQL块,也是CALL 过程名的形式。 例9.1 创建一个DML触发器:用于每次对表SYSTEM.STUDENT进行DML操作(插入、删除和修改)前,首先在屏幕上显示该学生原来的年龄、现在的年龄以及新旧年龄的差值。 CREATE OR REPLACE TRIGGER SYSTEM.PRINT_SAGE_TRIGGER BEFORE INSERT OR DELETE OR UPDATE ON SYSTEM.STUDENT FOR EACH ROW DECLARE

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档