フィールドにNOTNULL制約があるデータベースがあり、この制約を削除したいと思います。複雑な要因は、この制約にはシステム定義の名前があり、その制約の名前は本番サーバー、統合サーバー、およびさまざまな開発者データベース間で異なることです。現在のプロセスは変更スクリプトをチェックインすることであり、自動化されたタスクがターゲットデータベースに対してsqlplusを介して適切なクエリを実行するため、sqlplusに直接送信できるソリューションをお勧めします。
私自身のデータベースでは、これを削除するSQLは次のようになります。
alter table MYTABLE drop constraint SYS_C0044566
all_constraints
ビューをクエリすると、制約が表示されます。
select * from all_constraints where table_name = 'MYTABLE'
しかし、SEARCH_CONDITION
のLONG
データ型を操作する方法や、名前を知った後でもルックアップされた制約を動的に削除する最善の方法がわかりません。
では、名前ではなく、制約に基づいてこの制約を削除できる変更スクリプトを作成するにはどうすればよいでしょうか。
編集:@Allanの答えは良いものですが、(Oracleの専門知識が不足しているため)システムで生成された名前を持つ可能性のある制約がそれに関連付けられて、名前を知らなくても制約。システム名の制約を論理的に削除するときに、その制約の名前を知らなくても済むようにする方法が常にあるというのは本当ですか?