Oraclefind一个约束
我有一个约束称为users.SYS_C00381400
。 我如何find这个约束是什么? 有没有办法查询所有约束?
select * from all_constraints where owner = '<NAME>' and constraint_name = 'SYS_C00381400' /
像所有的数据字典视图一样,这是一个USER_CONSTRAINTS视图,如果您只想检查pipe理用户的当前模式和DBA_CONSTRAINTS视图。
约束名称的构造表示系统生成的约束名称。 例如,如果我们在表声明中指定NOT NULL。 或者确实是一个主要或唯一的关键。 例如:
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'
表示支票, 'P'
表示小费。
通常给关系约束一个明确的名字是个好主意。 例如,如果数据库为主键创build索引(如果该列尚未编入索引,则该索引将执行索引),它将使用约束名称来命名索引。 您不希望数据库充满名为SYS_C00935191
的索引。
大多数人不打扰命名NOT NULL约束。
要获得更详细的描述(哪个表/列引用哪个表/列)可以运行以下查询:
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;
从这里 。
也许这可以帮助..
SELECT constraint_name, constraint_type, column_name from user_constraints natural join user_cons_columns where table_name = "my_table_name";