暂无图片
为什么pl/sql中和sqlplus中看到的字段属性不一致,FD_AI,FD_THEME sqlplus显示可为空,pl/sql显示不可为空
我来答
分享
暂无图片 匿名用户
为什么pl/sql中和sqlplus中看到的字段属性不一致,FD_AI,FD_THEME sqlplus显示可为空,pl/sql显示不可为空


为什么pl/sql中和sqlplus中看到的字段属性不一致,FD_AI,FD_THEME  sqlplus显示可为空,pl/sql显示不可为空

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
PiscesCanon

如果是某个列存在"NOT NULL"约束且约束是enable即生效的,但是约束的VALIDATED属性为"NOT VALIDATED",使用sqlplus去desc的时候,这个列的Null?不会有"NOT NULL"显示出来,即跟你上边一样是空的。

但是用plsql去看的话,可为null那一栏是没有打勾的。

PS:validate/novalidate代表启用约束时是否对表中原有数据作检查。

我简单模拟出你的场景,如下:


你可以看看你的情况是不是这种类型导致的,执行以下语句看看validated列的值如何,

select constraint_name,constraint_type,search_condition,status,validated from dba_constraints where owner='PORTAB' and table_name='SELF_SET';

如果确实为"NOT VALIDATED",使用alter table portab.self_set modify constraint 对应约束名 enable validate;后再desc看看。


暂无图片 评论
暂无图片 有用 0
广州_老虎刘

在create table时,如果你的not null约束不是直接写在字段后面, 而是通过check或constraint子句增加的, 通过sqlplus都不会显示; plsql developer能显示使用check增加的not null , 但是不会显示通过constraint增加的not null.

CREATE TABLE T_check
( "ID" NUMBER,                                                 ------sqlplus(desc)不显示not null,但是plsql developer能看到是not null
"NAME" VARCHAR2(30) NOT NULL ENABLE,   ------sqlplus(desc)和plsql developer都能看到not null
"STATUS" NUMBER,                                          ------sqlplus(desc)和plsql developer都看不到not null
CHECK (id is not null) ENABLE,
CONSTRAINT "C_XXX" CHECK ("STATUS" IS NOT NULL) ENABLE
);

以上3种not null, 在dba_constraints中都是一样的

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏