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

各位有没有碰上过有主键,但是数据仍有重复的情况?
我碰上了这种情况,不知道怎么处理.

情况是这样的:表里面有几个字段,A,B, C, D等

其中A字段是number类型,并且是表的主键字段

当查询时,使用select * from 表 where C = '指定值' 查出来结果,发现有几条记录。

奇怪的是,每条记录字段A值都是一样的。(这些记录的B和C字段值则不同)

但更奇怪的是,取查询出来的一条记录的A字段值,执行另一个查询,select * from 表 where A = '查询出来的值'

结果只返回一条记录(查出来的记录,B,C,D的值都跟之前查出来的不同)

查看执行计划,第一条sql走的是普通索引扫描(C上面建了一个普通索引)
第二条sql走的是唯一索引扫描(A上面建了主键)

查all_indexes的索引状态status两个索引都是valid的
================================================================
不知道各位有没有碰上类似这样的问题,表有主键,但是数据有重复。 用两个逻辑等价的sql查询返回结果不同。

是什么原因造成的? 要怎么验证? 怎么解决? 怎么避免?

------解决方案--------------------
探讨
奇怪的是,每条记录字段A值都是一样的。

------解决方案--------------------
我也觉得不太可能, 主键失效了?
------解决方案--------------------
all_constraints 里面有两个字段 一个是 status 一个是 validated

你看看这个是否是正常。 
有一种叫做关系 启用 ,但不合法