• ベストアンサー

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

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

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

  • ベストアンサー
  • erupi1973
  • ベストアンサー率75% (27/36)
回答No.1

良い参考URLが見つからないのですが。 Oracleでは、歴史的経緯から、空文字('')とNULLは同じものとして扱われます。そのため、NOT NULL制約があると空文字で挿入、更新できません。 余談になりますが、上記の理由で、「ある列が空文字のレコード」をSELECTする場合、以下のように書く必要があります。 SELECT * FROM TEST_TABLE WHERE STR IS NULL これはOK SELECT * FROM TEST_TABLE WHERE STR = '' これはだめ

noname#53515
質問者

お礼

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

関連するQ&A