• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

数据库进阶:循序渐进讲解Oracle数据库的完整性概念

发布: 2008-5-13 11:05 | 作者: GOD | 来源: 希赛网 | 查看: 67次 | 进入软件测试论坛讨论

领测软件测试网

例1 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码。 CREATE TABLE dept

  (deptno NUMBER,
  dname VARCHAR(9) CONSTRAINT u1 UNIQUE,
  loc VARCHAR(10),
  CONSTRAINT pk_dept PRIMARY KEY (deptno));

  其中CONSTRAINT U1 UNIQUE表示约束名为U1,该约束要求Dname列值唯一。

  例2 建立学生登记表Student,要求学号在90000~99999之间,年龄<29,性别只能是“男”或“女”,姓名非空。 CREATE TABLE student

  (sno NUMBER(5) CONSTRAINT c1 CHECK (sno BETWEEN 90000 AND 99999),
  sname VARCHAR(20) CONSTRAINT c2 NOT NULL,
  sage NUMBER(3) CONSTRAINT c3 CHECK (sage<29),
  ssex VARCHAR(2) CONSTRAINT c4 CHECK(ssex IN('男','女')));

  例3 建立职工表EMP,要求每个职工的应发工资不得超过3000元。应发工资实际上就是实发工资列Sal与扣除项Deduct之和。 CREATE TABLE emp

  (eno NUMBER(4),
  ename VARCHAR(10),
  job VARCHAR(8),
  sal NUMBER(7,2),
  deduct NUMBER(7,2),
  deptno NUMBER(2),
  CONSTRAINT c1 CHECK (sal + deduct <= 3000));

  在Oracle中,除列值非空、列值唯一、检查列值是否满足一个布尔表达式外,用户还可以通过触发器(Trigger)来实现其他完整性规则。所谓数据库触发器,就是一类靠事件驱动的特殊过程,一旦由某个用户定义,任何用户对该数据的增、删、改操作均由服务器自动激活相应的触发器,在核心层进行集中的完整性控制。

  定义数据库触发器的语句是CREATE TRIGGER。

  例4 为教师表Teacher定义完整性规则“教授的工资不得低于1000元,如果低于1000元,自动改为1000元”。 CREATE TRIGGER update_sal

  BEFORE INSERT OR UPDATE OF sal, pos
  ON teacher
  FOR EACH ROW
  WHEN (:NEW.pos = '教授') /**//* 某教员晋升为教授 */
  BEGIN
  IF :NEW.sal < 1000
  THEN
  :NEW.sal := 1000;
  END IF;
  END;

  综上所述,Oracle提供了CREATE TABLE语句CREATE TRIGGER语句定义完整性约束条件,其中用CREATE TABLE语句可以定义很复杂的完整性约束条件。完整性约束条件一旦定义好,Oracle会自动执行相应的完整性检查,对于违反完整性约束条件的操作或者拒绝执行或者执行事先定义的操作。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网