网络数据库开发技术全套PPT电子课件教案-第8章 SQL SERVER的完整性控制.pptVIP

网络数据库开发技术全套PPT电子课件教案-第8章 SQL SERVER的完整性控制.ppt

  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文档。上传文档
查看更多
网络数据库开发技术全套PPT电子课件教案-第8章 SQL SERVER的完整性控制

第8章 SQL SERVER的完整性控制;主要内容: 本章从约束,规则,默认值,标识列几方面介绍数据库完整性控制的实现方法。;8.1 SQL SERVER完整性概述;8.1.1 完整性分类;实体完整性;;域完整性;参照完整性;8.1.2 数据库完整性的实现机制;8.2 约束 ;1 主键(PRIMARY KEY)约束;;2 外键(FOREIGN KEY)约束;;如果一个外键值没有候选键,则不能插入带该值(NULL 除外)的行。如果尝试删除现有外键指向的行,ON DELETE 子句将控制所采取的操作。ON DELETE 子句有两个选项: ? NO ACTION 指定删除因错误而失败。 ??CASCADE 指定还将删除包含指向已删除行的外键的所有行。 如果尝试更新现有外键指向的候选键值,ON UPDATE 子句将定义所采取的操作。它也支持NO ACTION和CASCADE选项。;3 CHECK约束;【例3】显示名为chk_id约束的创建,该约束确保只对此关键字输入指定范围内的数字,以进一步强制执行主键的域。 create table cust_sample ( cust_id int primary key, cust_name char(50), cust_address char(50), cust_credit_limit money, constraint chk_id check (cust_id between 0 and 10000 ) );;;4 惟一( UNIQUE) 约束;8.3.1 创建规则;【例4】创建一个规则,用以限制插入该规则所绑定的列中的整数范围。 create rule range_rule as @range = $1000 and @range $20000 【例5】创建一个规则,用以将输入到该规则所绑定的列中的实际值限制为只能是该规则中列出的值。 create rule list_rule as @list in (1389, 0736, 0877) 【例6】创建一个遵循这种模式的规则:任意两个字符的后面跟一个连字符和任意多个。 create rule pattern_rule as @value like _ _-%[0-9];8.3.2 规则的绑定与松绑;futureonly_flag仅当将规则绑定到用户定义的数据类型时才使用。futureonly_flag 的数据类型为 varchar(15),默认值为 NULL。将此参数在设置为 futureonly 时,它会防止用户定义数据类型的现有列继承新规则。如果 futureonly_flag 为 NULL,那么新规则将绑定到用户定义数据类型的每一列,条件是此数据类型当前无规则或者使用用户定义数据类型的现有规则。 ;【例7】将规则绑定到列。 假设已经用 CREATE RULE 语句在当前数据库中创建名为 today 的规则,此示例将规则绑定到 employees 表的 hire date 列。将行添加到 employees 时,按照 today 规则检查 hire date 列的数据。 use master go ?exec sp_bindrule today, employees.[hire date] go;【例8】将规则绑定到用户定义的数据类型。 假设存在名为 rule_ssn 的规则和名为 ssn 的用户定义数据类型,此示例将 rule_ssn 绑定到 ssn。在 CREATE TABLE 语句中,类型 ssn 的列继承 rule_ssn 规则。类型 ssn 的现有列也继承 rule_ssn 规则,除非为 futureonly_flag 指定了 futureonly 或者在 ssn 上直接绑定了规则。绑定到列的规则始终优先于绑定到数据类型的规则。 use master go ?exec sp_bindrule rule_ssn, ssn go;【例9】使用 futureonly_flag。 此示例将 rule_ssn 规则绑定到用户定义数据类型 ssn。因为已指定 futureonly,所以不影响类型 ssn 的现有列。 use master go ?exec sp_bindrule rule_ssn, ssn, futureonly go ;【例10】使用分隔标识符。 此示例显示了在 object_name 中分隔标识符的使用。 use master go create table [t.2] (c1 int) exec sp_binderule rule1, [t.2].c1 go;解除规则绑定;【例11】为表 employees 的

文档评论(0)

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

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

1亿VIP精品文档

相关文档