【點(diǎn)擊:】
阿木伯 著
|
|
如何查看用戶表上的約束內(nèi)容? |
|
- 系統(tǒng)環(huán)境:
1、操作系統(tǒng):Windows 2000 Server,機(jī)器內(nèi)存128M
2、數(shù)據(jù)庫(kù): Oracle 8i R2 (8.1.6) for NT 企業(yè)版
3、安裝路徑:C:\ORACLE
- 實(shí)現(xiàn)方法:
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) --狀態(tài)
DEFERRABLE VARCHAR2(14) --
DEFERRED VARCHAR2(9) --
VALIDATED VARCHAR2(13) --
GENERATED VARCHAR2(14) --
BAD VARCHAR2(3) --
RELY VARCHAR2(4) --
LAST_CHANGE DATE --最后更改時(shí)間
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 約束內(nèi)容 format a20
SQL> select a.OWNER 用戶名,
a.CONSTRAINT_NAME 約束名稱,
a.CONSTRAINT_TYPE 約束類型,
a.TABLE_NAME 表名,
b.COLUMN_NAME 列名,
a.SEARCH_CONDITION 約束內(nèi)容
from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;
用戶名 約束名稱 約束類型 表名 列名 約束內(nèi)容
---------- --------------- ---------- ---------- ---------- --------------------
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
這樣,如果發(fā)出以下一樣的語(yǔ)句,會(huì)出現(xiàn)約束錯(cuò)誤,可以根據(jù)顯示的約束號(hào)來(lái)查詢是違反了哪一列上的約束條件
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 約束內(nèi)容
from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
where a.CONSTRAINT_NAME='SYS_C001241' and a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;
用戶名 約束名稱 約束類型 表名 列名 約束內(nèi)容
---------- --------------- ---------- ---------- ---------- --------------------
TEST1 SYS_C001241 C B C c>0
|
【最后更新:】 |
|