oracleデータベースの対応する列の唯一のconstraint_nameの取得方法は?oracleデータベースの列名による制約名の取得
つまり、列名で制約名を取得したいと考えています。この質問のための
疑似クエリ:
select constraint_name from table_name tname where tname.column_name = 'columnName';
が、これは可能ですか?
oracleデータベースの対応する列の唯一のconstraint_nameの取得方法は?oracleデータベースの列名による制約名の取得
つまり、列名で制約名を取得したいと考えています。この質問のための
疑似クエリ:
select constraint_name from table_name tname where tname.column_name = 'columnName';
が、これは可能ですか?
オラクル・ディクショナリ・ビューを使用しALL_CONS_COLUMNS
かUSER_CONS_COLUMNS
(あなたは列タイプで、それを制限したい場合は - 一意キーまたは主キー制約、すなわち - あなたはALL_CONSTRAINTS
またはUSER_CONSTRAINTS
に参加することができます):
SELECT acc.constraint_name
FROM ALL_CONS_COLUMNS acc
INNER JOIN ALL_CONSTRAINTS ac
ON (acc.CONSTRAINT_NAME = ac.CONSTRAINT_NAME)
WHERE ac.OWNER = 'YOUR_SCHEMA_NAME'
AND ac.TABLE_NAME = 'YOUR_TABLE_NAME'
AND acc.COLUMN_NAME = 'YOUR_COLUMN_NAME'
AND ac.CONSTRAINT_TYPE IN ('U', 'P') -- Unique or primary key constraints
または:
SELECT ucc.constraint_name
FROM USER_CONS_COLUMNS ucc
INNER JOIN ALL_CONSTRAINTS uc
ON (ucc.CONSTRAINT_NAME = uc.CONSTRAINT_NAME)
WHERE uc.OWNER = 'YOUR_SCHEMA_NAME'
AND uc.TABLE_NAME = 'YOUR_TABLE_NAME'
AND ucc.COLUMN_NAME = 'YOUR_COLUMN_NAME'
AND uc.CONSTRAINT_TYPE IN ('U', 'P') -- Unique or primary key constraints
これを試してください。
select CONSTRAINT_NAME from USER_CONS_COLUMNS
where table_name='YOUR_TABLE'
and column_name='YOUR_COLUMN'
これは、 'UNIQUE'制約だけでなく、列に対するすべての制約を取得します。 – MT0
ありがとう、私が言うように、私は唯一の "一意の"制約名を取得したい、 –
「[oracleのテーブル列のシステム生成チェック制約名を取得する方法](http:// stack overflow.com/q/34932419/1509264)、UNIQUE制約のみを取得するという制限が追加されています。 – MT0