既に列にNot Nullが指定されているかどうかの判断について
945496Jun 24 2012 — edited Jun 25 2012お世話になります。
件名についてですが、Oracle10gとOracle11gであるテーブルの列でNot Nullの制約が
列に追加されていない場合、Not Null制約を付けたいと思っています。
制約自体は、「ALTER TABLE my_table MODIFY ( char_col NOT NULL ) 」で付ける事は可能ですが、
既に列にNot Nullの制約がついていた場合は、エラーになってしまいますので、
存在チェックを行いたいと思っています。
select * from USER_CONSTRAINTS
Where TABLE_NAME = 'TABLE_NAME1';
上記のSQLでSEARCH_CONDITION を確認すると
「"列名" IS NOT NULL」と表示されます。
しかし、型がLONGの為、
and search_condition ='"列名" IS NOT NULL'
上記をWhere条件につけると、
ORA-0092:データ型が一致しません。:Numberが予想されますが、LONGです
というエラーが発生してしまいます。
search_conditionをTO_CHARで変換してみましたが、
やはりOra-0092(Charが予想されますが、LONGです)が発生しました。
Not Null制約の判定をする場合、どのようにすべきかお分かりの方は教えていただけますでしょうか?