Chinaunix首页 | 论坛 | 博客
  • 博客访问: 458011
  • 博文数量: 711
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 4200
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 14:18
文章分类

全部博文(711)

文章存档

2011年(1)

2008年(710)

我的朋友

分类:

2008-10-29 12:00:07


  系统环境: 1、操作系统: 2000 Server,机器内存128M
  2、数据库:  8i R2 (8.1.6) for NT 企业版
  3、安装路径:C:\ORACLE
  
   实现方法:
   
  SQL> conn system/manager
  SQL> grant connect,resource to test1 identified by pass1;
  SQL> conn test1/pass1
  SQL> create table a(a number primary key);
  SQL> create table b(a number primary key,b number not null,c number check(c>0));
  
  SQL> desc USER_CONSTRAINTS
   名称 空? 类型
   ----------------------------------------- -------- --------------
   OWNER NOT NULL VARCHAR2(30) --用户名
   CONSTRAINT_NAME NOT NULL VARCHAR2(30) --约束名
   CONSTRAINT_TYPE VARCHAR2(1) --约束类型
   TABLE_NAME NOT NULL VARCHAR2(30) --表名
   SEARCH_CONDITION LONG --
   R_OWNER VARCHAR2(30) --
   R_CONSTRAINT_NAME VARCHAR2(30) --
   DELETE_RULE VARCHAR2(9) --
   STATUS VARCHAR2(8) --状态
   DEFERRABLE VARCHAR2(14) --
   DEFERRED VARCHAR2(9) --
   VALIDATED VARCHAR2(13) --
   GENERATED VARCHAR2(14) --
   BAD VARCHAR2(3) --
   RELY VARCHAR2(4) --
   LAST_CHANGE DATE --最后更改时间
  
  SQL> desc USER_CONS_COLUMNS
   名称 空? 类型
   ----------------------------------------- -------- ----------------
   OWNER NOT NULL VARCHAR2(30) --用户名
   CONSTRAINT_NAME NOT NULL VARCHAR2(30) --约束名
   TABLE_NAME NOT NULL VARCHAR2(30) --约束类型
   COLUMN_NAME VARCHAR2(4000) --列名
   POSITION NUMBER --
  
  SQL> col 用户名 format a10
  SQL> col 约束名称 format a15
  SQL> col 约束类型 format a10
  SQL> col 表名 format a10
  SQL> col 列名 format a10
  SQL> col 约束内容 format a20
  
  SQL> select a.OWNER 用户名,
   a.CONSTRAINT_NAME 约束名称,
   a.CONSTRAINT_TYPE 约束类型,
   a.TABLE_NAME 表名,
   b.COLUMN_NAME 列名,
   a.SEARCH_CONDITION 约束内容
   from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
   where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;
  
  用户名 约束名称 约束类型 表名 列名 约束内容
  ---------- --------------- ---------- ---------- ---------- --------------------
  TEST1 SYS_C001239 P A A
  TEST1 SYS_C001240 C B B "B" IS NOT NULL
  TEST1 SYS_C001241 C B C c>0
  TEST1 SYS_C001242 P B A
  
  
  这样,如果发出以下一样的语句,会出现约束错误,可以根据显示的约束号来查询是违反了哪一列上的约束条件
  
  SQL> insert into b values(1,1,-1);
  insert into b values(1,1,-1)
  *
  ERROR 位于第 1 行:
  ORA-02290: 违反检查约束条件 (TEST1.SYS_C001241)
  
  SQL> select a.OWNER 用户名,
   a.CONSTRAINT_NAME 约束名称,
   a.CONSTRAINT_TYPE 约束类型,
   a.TABLE_NAME 表名,
   b.COLUMN_NAME 列名,
   a.SEARCH_CONDITION 约束内容
   from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
   where a.CONSTRAINT_NAME='SYS_C001241' and a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;
  
  用户名 约束名称 约束类型 表名 列名 约束内容
  ---------- --------------- ---------- ---------- ---------- --------------------
  TEST1 SYS_C001241 C B C c>0
  
  
  
【责编:admin】

--------------------next---------------------

阅读(316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~