dポイントプレゼントキャンペーン実施中!

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

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

A 回答 (1件)

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



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

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

SELECT * FROM TEST_TABLE WHERE STR IS NULL これはOK
SELECT * FROM TEST_TABLE WHERE STR = '' これはだめ
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/27 18:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す