如何获取oracle数据库中相应列的唯一constraint_name?
换句话说,我希望按列名称获取约束名称。
此问题的伪查询:
select constraint_name from table_name tname where tname.column_name = 'columnName';
这可能吗?
答案 0 :(得分:4)
试试这个。
select CONSTRAINT_NAME from USER_CONS_COLUMNS
where table_name='YOUR_TABLE'
and column_name='YOUR_COLUMN'
答案 1 :(得分:4)
使用Oracle词典视图ALL_CONS_COLUMNS
或USER_CONS_COLUMNS
(如果您想按列类型限制它 - 即唯一或主键约束 - 那么您可以加入ALL_CONSTRAINTS
或{{ 1}}):
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