【问题标题】:get constraint name by column name in oracle databaseoracle数据库中通过列名获取约束名
【发布时间】:2017-04-09 07:15:13
【问题描述】:

如何获取oracle数据库中对应列的唯一constraint_name?

换句话说,我想通过列名获取约束名。

此问题的伪查询:

select constraint_name from table_name tname where tname.column_name = 'columnName';

这可能吗?

【问题讨论】:

标签: oracle unique-constraint


【解决方案1】:

使用 Oracle 字典视图 ALL_CONS_COLUMNSUSER_CONS_COLUMNS(如果您想按列类型限制它 - 即唯一或主键约束 - 那么您可以加入 ALL_CONSTRAINTSUSER_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

【讨论】:

    【解决方案2】:

    试试这个。

    select CONSTRAINT_NAME from  USER_CONS_COLUMNS
    where table_name='YOUR_TABLE' 
    and column_name='YOUR_COLUMN'
    

    【讨论】:

    • 这将获得列的所有约束——不仅仅是UNIQUE 约束。
    • 非常感谢,但正如我所说,我想获得唯一的“唯一”约束名称,
    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 2013-04-15
    • 2013-12-14
    • 2017-07-22
    • 2014-05-27
    • 2018-09-30
    • 2011-08-01
    相关资源
    最近更新 更多