系统环境: 1、操作系统:windows 2000 Server,机器内存128M 2、数据库: Oracle 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
|