OracleおよびPostgreSQLでテーブルレベルのチェック制約を取得する特定の方法があるかどうかを知りたいと思います。OracleおよびPostgreSQLでテーブルレベルのチェック制約を取得する方法
テーブル内のすべてのチェック制約を取得できますが、この特定のチェック制約のみを取得したいので、特定のクエリがあるかどうかわかりません。
ありがとうございます!
OracleおよびPostgreSQLでテーブルレベルのチェック制約を取得する特定の方法があるかどうかを知りたいと思います。OracleおよびPostgreSQLでテーブルレベルのチェック制約を取得する方法
テーブル内のすべてのチェック制約を取得できますが、この特定のチェック制約のみを取得したいので、特定のクエリがあるかどうかわかりません。
ありがとうございます!
PostgreSQLには、システムカタログpg_constraintがあります。
カタログpg_constraint店は、主キー、ユニーク、外国 キー、およびテーブル上の排他制約を確認してください。 (列の制約は特別に扱われる ではありません。すべての列制約はいくつかのテーブル 制約に相当します)。nullでない制約は、カタログのpg_attribute に表示されます。
(CREATE CONSTRAINT トリガーで作成された)ユーザー定義の制約トリガーもこのテーブルにエントリを生成します。
ドメインのチェック制約もここに保存されます。
SELECT
*
FROM
pg_constraint
WHERE
contype = 'c' AND -- check constraint
conrelid != 0 AND -- table constraint
conname = 'my_check';
contype
列が制約タイプが含まれている、c
はチェック制約のためです。 conrelid
列には、この制約が適用されているテーブルのoid
と、テーブル制約でない場合は0
が含まれています。 Oracleの基本的なビューのために
は、特定のテーブル内の特定の制約得るために、ALL_CONSTRAINTS
クエリです:あなたの答えのための
SELECT *
FROM all_constraints
WHERE constraint_name LIKE upper('%&your_costraint%')
AND table_name LIKE upper('%&your_table%');
ありがとう、私は制約名を知らずにチェック制約tab_levelのための特定のクエリを探しています。あなたの方法では、私はテーブルのすべての制約を取得します。 – WhiteShadow
カラム** constraint_type **を使用してチェック制約のみを検索します: 'SELECT * FROM all_constraints WHERE table_name LIKE upper( '%&your_table%')AND constraint_type = 'C';' –
感謝そんなに、私は唯一の制約]タブ - を確認するために、特定のクエリを探していますレベル、私はそれが存在するかわからない。このクエリでは、タブレベルのチェック制約だけでなく、すべての制約を取得します。 – WhiteShadow
OK、テーブルチェック制約のみを選択して回答を更新しました。 「特定のチェック制約」が意味することを説明してください。不足している小切手を見つけたいですか? – Adam
私は良い説明しているかどうか分かりません。私は、コミコンの名前がわからないテーブルレベルのチェック制約が必要です。例:BONUSとTAXという2つの変数を持つテーブルEMPがあり、BONUS> TAXのテーブルレベルのチェック制約があります。私はこの制約が欲しいだけですが、pg_constraintを調べると、それがテーブルレベルのチェック制約かカラムレベルのチェック制約かどうかを問うことはできません。私はそれを非常に良い、申し訳ありません説明したかどうかわからない! – WhiteShadow