こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

NOT NULL制約がついた項目のUPDATEについて

基本的な事で申し訳ありません。

Oracle10g を使用していますが、
SQLのUPDATE文で主キーではない、
NOT NULL 制約がついたVARCHAR2(30)の項目を
''(ブランク)で更新しようとした所エラーが返されました。(ORA-01407)
NULLで更新するのではないから大丈夫かと思っていたんですが、
NOT NULL 制約がついているとブランクでも更新ができないのでしょうか?

投稿日時 - 2006-01-24 14:40:37

QNo.1917995

すぐに回答ほしいです

質問者が選んだベストアンサー

良い参考URLが見つからないのですが。

Oracleでは、歴史的経緯から、空文字('')とNULLは同じものとして扱われます。そのため、NOT NULL制約があると空文字で挿入、更新できません。

余談になりますが、上記の理由で、「ある列が空文字のレコード」をSELECTする場合、以下のように書く必要があります。

SELECT * FROM TEST_TABLE WHERE STR IS NULL これはOK
SELECT * FROM TEST_TABLE WHERE STR = '' これはだめ

投稿日時 - 2006-01-24 14:51:21

お礼

わかりやすく回答していただいて
ありがとうございました。
制約を外してもらえるよう依頼を掛けてみます。

投稿日時 - 2006-01-27 18:55:10

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問