Oracle SQL で作成した複数のテーブルの制約ごとに名前を定義しました。
問題は、特定のテーブルの列の制約を削除するには、各制約に指定した名前を知る必要があるのですが、それを忘れてしまったことです。
テーブルの各列に指定した制約の名前をすべてリストするにはどうすればよいですか?
そうするための SQL ステートメントはありますか?
ベストアンサー1
問い合わせる必要があるデータ辞書具体的には、USER_CONS_COLUMNS
テーブル列と対応する制約を確認するためのビューです。
SELECT *
FROM user_cons_columns
WHERE table_name = '<your table name>';
参考までに、テーブルを小文字の名前 (二重引用符を使用) で明示的に作成しない限り、テーブル名はデフォルトで大文字になりますので、クエリでもそのようにしてください。
制約自体の詳細情報を確認したい場合は、USER_CONSTRAINTS
ビューをクエリします。
SELECT *
FROM user_constraints
WHERE table_name = '<your table name>'
AND constraint_name = '<your constraint name>';
テーブルがデフォルトのスキーマではないスキーマに保持されている場合は、ビューを次のように置き換える必要がある場合があります。
all_cons_columns
そして
all_constraints
where 句に追加:
AND owner = '<schema owner of the table>'