系统环境: 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(c0));
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 c0
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 c0