- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章数据库完整性
An Introduction to Database System 学习目标 掌握三类完整性(重点) 理解完整性约束命名子句 掌握触发器(重点+难点) 掌握SQL Server完整性技术(重点) 5.1 实体完整性 数据库的完整性:指数据的正确性、有效性和相容性。 DBMS实现完整性的方法 提供定义完整性约束条件的机制:完整性约束条件也称完整性规则,是数据库中的数据必须满足的语义约束条件。 提供完整性规则检查的机制 违约处理:DBMS若发现用户的操作违背了完整性规则,就采取拒绝、级联等操作。 5.4 完整性约束命名子句 完整性约束命名子句:CONSTRAINT 完整性约束条件名。 [例10]创建Stu4表,要求学号在90000~99999之间,姓名不能为空,性别只能取‘男’或‘女’,年龄小于30。 CREATE TABLE Stu4 (Sno DECIMAL CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(8) CONSTRAINT C2 NOT NULL, Ssex CHAR(2) CONSTRAINT C3 CHECK (Ssex IN (‘男’,‘女’)), Sage DECIMAL CONSTRAINT C4 CHECK (Sage 30), Sdept CHAR(20), CONSTRAINT StuKey PRIMARY KEY (Sno)); 修改表中的完整性限制 [例13]修改Stu4表中的约束条件,要求学号改为在900000~999999之间,年龄由小于30改为小于40。 ALTER TABLE Stu4 DROP CONSTRAINT C1; ALTER TABLE Stu4 ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999); ALTER TABLE Stu4 DROP CONSTRAINT C4; ALTER TABLE Stu4 ADD CONSTRAINT C4 CHECK (Sage 40); 5.5 域中的完整性限制 SQL支持域的概念,可以用CREATE RULE语句建立一个域以及该域应该满足的完整性约束条件。 [例14]建立一个性别域,并声明性别域的取值范围。 CREATE RULE GenDom AS @list IN (‘男’, ‘女’) [例15] 将性别域GenDom绑定在Student表的性别字段上。 sp_bindrule ‘GenDom’, ‘Student.Ssex’ [例16] 从Student表的性别字段删除已绑定的所有规则。 sp_unbindrule ‘Student.Ssex’ [例17] 删除GenDom域。 DROP RULE GenDom 触发器(trigger) trigger 触发器 AFTER触发器和INSTEAD OF触发器 关于AFTER触发器(FOR触发器): 概念: 触发器是一种特殊类型的存储过程,触发器用来保证当记录被插入,修改,删除时能够执行与基表有关的特定的事务规则 . 类型:触发器是离不开表而存在的,它保护表中的数据。AFTER触发器有三种类型,即INSERT,UPDATE,DELETE。 用途:触发器最大的用途是维护行级数据完整性,而不是返回结果,可以一连串地修改数据库中相关表的数据。 AFTER触发器规则 触发器在操作发生之后执行,约束是在操作发生之前起作用. 约束优先触发器检查.如果有冲突,那么触发器不执行. 一个表可以有多个触发器,某一个触发器可以定义于一种操作或者多种操作. 触发器不应该返回结果集. 触发器是一种特殊类型的存储过程 存储过程可以由用户直接调用,触发器不能够被直接调用。 触发器的作用 触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。除此之外,触发器还有以下作用: Inserted表和Deleted表 SQL Server 2005为每个DML触发器都创建了两个专用临时表:Inserted表和Deleted表。这两个表的结构总是与被该触发器作用的表的结构相同,触发器执行完成后,与该触发器相关的这两个表也会被删除。 DML触发器 DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作。DML事件包括对表
文档评论(0)