oracle bug 12415167,oracle12415167

來源:互聯網
上載者:User

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打補丁問題不大
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.