Display names of all constraints for a table in Oracle SQL

前端 未结 6 766
失恋的感觉
失恋的感觉 2020-11-29 16:19

I have defined a name for each of the constraint for the multiple tables that I have created in Oracle SQL.

The problem is that to drop a constraint for the column

相关标签:
6条回答
  • 2020-11-29 17:00
    SELECT * FROM USER_CONSTRAINTS
    
    0 讨论(0)
  • 2020-11-29 17:13
    select constraint_name,constraint_type 
    from user_constraints
    where table_name = 'YOUR TABLE NAME';
    

    note: table name should be in caps.

    In case you don't know the name of the table then,

    select constraint_name,constraint_type,table_name 
    from user_constraints;
    
    0 讨论(0)
  • 2020-11-29 17:14

    You need to query the data dictionary, specifically the USER_CONS_COLUMNS view to see the table columns and corresponding constraints:

    SELECT *
      FROM user_cons_columns
     WHERE table_name = '<your table name>';
    

    FYI, unless you specifically created your table with a lower case name (using double quotes) then the table name will be defaulted to upper case so ensure it is so in your query.

    If you then wish to see more information about the constraint itself query the USER_CONSTRAINTS view:

    SELECT *
      FROM user_constraints
     WHERE table_name = '<your table name>'
       AND constraint_name = '<your constraint name>';
    

    If the table is held in a schema that is not your default schema then you might need to replace the views with:

    all_cons_columns
    

    and

    all_constraints
    

    adding to the where clause:

       AND owner = '<schema owner of the table>'
    
    0 讨论(0)
  • 2020-11-29 17:17

    Use either of the two commands below. Everything must be in uppercase. The table name must be wrapped in quotation marks:

    --SEE THE CONSTRAINTS ON A TABLE
    SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';
    
    --OR FOR LESS DETAIL
    SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';
    
    0 讨论(0)
  • 2020-11-29 17:18

    Often enterprise databases have several users and I'm not aways on the right one :

    SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;
    

    Picked from Oracle documentation

    0 讨论(0)
  • 2020-11-29 17:19

    maybe this can help:

    SELECT constraint_name, constraint_type, column_name
    from user_constraints natural join user_cons_columns
    where table_name = "my_table_name";
    

    cheers

    0 讨论(0)
提交回复
热议问题