欢迎投稿

今日深度:

oracle bug 12415167,oracle12415167

oracle bug 12415167,oracle12415167


drop table t1;
create table t1 (c1 char(2) primary key, c2 char(1) not null);
insert into t1 values ('A ','A');
 
select t1.c1 from t1
 where t1.c1 in (select c2 from t1 union all select '0'||c2 c2 from t1);
select /*+ full(t1) */ t1.c1 from t1
 where t1.c1 in (select c2 from t1 union all select '0'||c2 c2 from t1);
 
1st query returns no row, 2nd query return 'A'

oracle check约束的bug?

这取决于数据库处理null的机制。

1、因为null不等于任何值,所以null='男'和null='女'的返回值都是unknown

2、而系统得到这个unknown后的反应有些特别
1)如果是在where条件中得到这个unknown,系统会返回flase。如:
select * from table_name where 1=null;
这个时候是不会有结果返回的。
2)但是如果这个unknown是在check约束中返回的会出现什么情况呢?
check约束会用这个unknown返回true值,也就是满足check约束。

3、这就是你的疑问的由来,值得一提的是这不是oracle的bug,不仅oracle这么处理,SqlServer、mysql、甚至access都已这样操作的。

4、相信经过上面的解释后你就不会有疑问了。

---
以上,希望对你有所帮助。
 

oracle怎给已知bug打补丁

README说的清楚啊,如何备份,如何打补丁,如何回滚认真按说明来就问题不大。生产库一定做好备份,小BUG打补丁问题不大
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3069.html NewsArticle oracle bug 12415167,oracle12415167 drop table t1;create table t1 (c1 char(2) primary key, c2 char(1) not null);insert into t1 values ('A ','A'); select t1.c1 from t1 where t1.c1 in (select c2 from t1 union all select '0'||c2 c2 from t1);...
评论暂时关闭