Oracle 找到一个约束

新手上路,请多包涵

我有一个名为 users.SYS_C00381400 的约束。我如何找到那个约束是什么?有没有办法查询所有约束?

原文由 David Oneill 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 926
1 个回答
select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/

与所有数据字典视图一样,如果您只想检查当前模式和管理用户的 DBA_CONSTRAINTS 视图,这是一个 USER_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' 用于初级。

一般来说,给关系约束一个明确的名字是个好主意。例如,如果数据库为主键创建索引(如果该列尚未建立索引,它将执行此操作),它将使用约束名称 oo 命名索引。您不想要一个充满索引的数据库,如 SYS_C00935191

老实说,大多数人都不会费心命名 NOT NULL 约束。

原文由 APC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进