查看用户表上的约束内容_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2062 | 回复: 0   主题: 查看用户表上的约束内容        下一篇 
felix
注册用户
等级:新兵
经验:6
发帖:56
精华:0
注册:2011-7-22
状态:离线
发送短消息息给felix 加好友    发送短消息息给felix 发消息
发表于: IP:您无权察看 2015-7-2 11:24:59 | [全部帖] [楼主帖] 楼主

系统环境:
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


--转自北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论