Oracle find a constraint

后端 未结 3 645
你的背包
你的背包 2020-12-12 09:29

I have a constraint called users.SYS_C00381400. How do I find what that constraint is? Is there a way to query all constraints?

相关标签:
3条回答
  • 2020-12-12 09:39

    To get a more detailed description (which table/column references which table/column) you can run the following query:

    SELECT   uc.constraint_name||CHR(10)
       ||      '('||ucc1.TABLE_NAME||'.'||ucc1.column_name||')' constraint_source
       ,       'REFERENCES'||CHR(10)
       ||      '('||ucc2.TABLE_NAME||'.'||ucc2.column_name||')' references_column
    FROM user_constraints uc ,
      user_cons_columns ucc1 ,
      user_cons_columns ucc2
    WHERE uc.constraint_name = ucc1.constraint_name
    AND uc.r_constraint_name = ucc2.constraint_name
    AND ucc1.POSITION        = ucc2.POSITION -- Correction for multiple column primary keys.
    AND uc.constraint_type   = 'R'
    AND uc.constraint_name   = 'SYS_C00381400'
    ORDER BY ucc1.TABLE_NAME ,
      uc.constraint_name;
    

    From here.

    0 讨论(0)
  • 2020-12-12 09:51

    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";
    
    0 讨论(0)
  • 2020-12-12 09:57
    select * from all_constraints
    where owner = '<NAME>'
    and constraint_name = 'SYS_C00381400'
    /
    

    Like all data dictionary views, this a USER_CONSTRAINTS view if you just want to check your current schema and a DBA_CONSTRAINTS view for administration users.

    The construction of the constraint name indicates a system generated constraint name. For instance, if we specify NOT NULL in a table declaration. Or indeed a primary or unique key. For example:

    SQL> create table t23 (id number not null primary key)
      2  /
    
    Table created.
    
    SQL> select constraint_name, constraint_type
      2  from user_constraints
      3  where table_name = 'T23'
      4  /
    
    CONSTRAINT_NAME                C
    ------------------------------ -
    SYS_C00935190                  C
    SYS_C00935191                  P
    
    SQL>
    

    'C' for check, 'P' for primary.

    Generally it's a good idea to give relational constraints an explicit name. For instance, if the database creates an index for the primary key (which it will do if that column is not already indexed) it will use the constraint name oo name the index. You don't want a database full of indexes named like SYS_C00935191.

    To be honest most people don't bother naming NOT NULL constraints.

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