日期:2014-05-17  浏览次数:20796 次

真诚请教大家一个oracle的问题,急盼指教!不胜感激!!!!
我现在用.NET在oracle上做开发,需要读出一张表中某一列的约束类型(我是从all_constraints和all_cons_columns里面来读取),可是当某一列的约束类型是NOT   NULL或者CHECK时,读出来的约束类型(constraint_type)都是字母“C”
,请问我该怎么区分是NOT   NULL还是CHECK呢???
这个问题我搞了两天了,网上也没找到答案,人都要整崩溃了,望哪位高手指点一下,实在感激不尽!!!(可惜我只有这10分了。。但还是希望能得到各位指教)

------解决方案--------------------
应该可以通过 SEARCH_CONDITION 来查询判断 ...

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

http://www.linuxaid.com.cn/tips/7/4/749109790.shtml

===================================================

我想看看上面的文章就可以解决你的问题!
Good luck to you!