ORACLE 空串'' 问题

前端之家收集整理的这篇文章主要介绍了ORACLE 空串'' 问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

对一个defaultValue=”且not null的新增字段增加索引,会引发COUNT计算结果为0的问题

– 创建测试表

CREATE TABLE tmp_tab_a(ID NUMBER PRIMARY KEY,NAME VARCHAR2(20));

– 插入测试数据

begin for i in 1..100 loop INSERT into tmp_tab_a (id,NAME)values(i,'str'||i);
  end loop;
  commit;
end;

– count(*)结果为100
– 执行计划显示走的主键索引进行count(*)计算

select count(*) from tmp_tab_a;

– 新增一个字段 sseqno not null,default = ”

alter table TMP_TAB_A add sseqno varchar2(20) default '' not null;

– 对字段sseqno新增一个索引

create index IND1_TMP_TAB_A ON TMP_TAB_A (sseqno);

– 异常情况出现count(*)结果都是 0
– 执行计划显示走的索引为IND1_TMP_TAB_A

select count(*) from TMP_TAB_A;
select count(id) from TMP_TAB_A;

– 将sseqno 的 not null属性去除,允许为null

alter table TMP_TAB_A modify sseqno null;

查询count结果为100,结果正确!
– 执行计划显示走的主键索引进行count(*)计算

select count(*) from TMP_TAB_A;
select count(id) from TMP_TAB_A;
原文链接:https://www.f2er.com/oracle/206632.html

猜你在找的Oracle相关文章