1. ホーム
  2. sql

[解決済み] Oracle SQLでテーブルのすべての制約の名前を表示する

2022-07-27 14:22:30

質問

Oracle SQLで作成した複数のテーブルに対して、それぞれの制約に名前を定義しています。

問題は、特定のテーブルのカラムの制約を削除するために、私が各制約に与えた名前を知る必要がありますが、私はそれを忘れてしまいました。

テーブルの各列に指定した制約の名前をすべてリストアップするにはどうしたらよいでしょうか。

これを行うためのSQL文はありますか?

どのように解決するのですか?

この問題を解決するには データ辞書 を、具体的には 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>'