e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> DB2教程 >> DB2 基础: 约束 >> 教程正文
 
教程搜索
 
 
相关教程
  • 数据挖掘器: 警告 — 及时采取行动
  • UNIX、Linux 和 Windows 的生动简介
  • “总览图”: IBM DB2 通用数据库和信息
  • DB2 大事记
  • 数据管理部门副总裁兼 CTO:Don Hader
  • IBM 联邦数据库技术
  • 唐纳德.海德勒(Donald J. Haderle)
  • 数据库未来展望
  • 哪一个分布式 DB2 UDB V8 版本适合您?
  • 从数据管理到信息集成: 自然的演变
  • 联邦 - 数据库互操作性(第 1 部分)
  • 成功是必然的(中)
  • 成功是必然的(上)
  • 成功是必然的(下)
  • DB2 信息集成: 总览图
  • IBM 杰出工程师兼信息集成主管 Nelson
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
DB2 基础: 约束
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
EMPNO 值就不是这样的了,它在 PROJECT 表中有匹配的外键值,因而不能被更新。指定了 CASCADE 选项的删除规则确保了当从 EMPLOYEE 表中删除主键值时,删除关联的 PROJECT 表将丢失包含相匹配的外键值的所有记录行。


“检查和再次检查” - 表检查约束

表检查约束(table check constraint)对将要添加到表中的数据实施已定义的限制。例如,一个表检查约束可确保每当在 EMPLOYEE 表中添加或更新电话分机时,雇员的电话分机号码都正好为四位数字。可在 CREATE TABLE 语句中使用 CHECK 子句( 图 1和 图 2)或者在如下的 altER TABLE 语句中定义表检查约束。

清单 6. 创建表检查约束。PHONENO_LENGTH 约束确保向 EMPLOYEE 表添加的电话分机正好为四位数字。

db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)

您也可以使用 DB2 Control Center 来定义表检查约束(图 6)。

图 6. Alter Table 窗口提供了一个方便方式来定义一列上的表检查约束。

单击 Add 按钮以定义新约束(将打开 Add Check Constraint 窗口),或者单击 Change 按钮以修改在列表中选中的现有的约束( 图 7)。

图 7. Change Check Constraint 窗口让您修改现有的检查条件。

如果表中的现有行包含违反新约束的值,您就不能创建此表检查约束(图 8)。在适当更新了那些不兼容的值之后,您就可以成功添加或修改此约束了。

图 8. 如果新的表检查约束与表中现有的值不兼容,则会返回一条错误。

延迟数据检查

SET INTEGRITY 语句可用于将表置于检查暂挂状态。这就允许进行定义新的检查约束的 altER TABLE 语句的执行,而不需检查该表中的现有数据。

使用 SET INTEGRITY 语句可以打开或者关闭表检查约束。这将非常有用,例如,当在给表加载大型数据的期间优化性能时。清单 7 呈现了一个简单场景,展示了使用 SET INTEGRITY 语句的一种可能方式。本例中,将雇员“000100”的电话分机更新为 123,然后关闭 EMPLOYEE 表的完整性检查。在 EMPLOYEE 表上定义要求电话分机值为 4 位数字的检查约束。创建名为 EMPL_EXCEPT 的异常表;这个新表的定义是 EMPLOYEE 表的镜像。然后打开完整性检查,而违反检查约束的行将被写入异常表中。对这些表的查询将证实有问题的行现在仅存在于异常表中。

清单 7. 使用 SET INTEGRITY 语句来延迟约束的检查。

db2 update employee set phoneno = '123' where empno = '000100' db2 set integrity for employee off db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4) db2 create table empl_except like employee db2 set integrity for employee immediate checked for exception in employee use empl_except SQL3602W Check data processing found constraint violations and moved them to exception tables. SQLSTATE=01603 db2 select empno, lastname, workdept, phoneno from empl_except EMPNO LASTNAME WORKDEPT PHONENO ------ --------------- -------- ------- 000100 SPENSER E21 123 1 record(s) selected.

结束语

我们已经探索了 DB2 Universal Database 所支持的不同类型的约束:非空(NOT NULL)约束、惟一约束、主键约束、外键(参照)约束以及表检查约束。我们展示了 DB2 UDB 是如何使用约束来对数据实施业务规则以及帮助维护数据库完整性的。我们还讲解了如何使用命令行和 DB2 Control Center(和如何查询数据库目录)来有效地管理约束。


上一页  1 2 3 
  • 上一篇教程: DB2 中的用户定义聚合函数
  • 下一篇教程: Informix Dynamic Server 中的 SQL 语句缓存
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.