sql - Oracle 查找约束

标签 sql oracle constraints

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

最佳答案

select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/

与所有数据字典 View 一样,如果您只想检查当前架构,则可以使用 USER_CONSTRAINTS View ,对于管理用户则可以使用 DBA_CONSTRAINTS View 。

约束名称的构造表示系统生成的约束名称。例如,如果我们在表声明中指定 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 约束。

关于sql - Oracle 查找约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095415/

相关文章:

java - 是否可以像 Java 类型一样命名数据库表?

sql - 加速 SQL Server 存储过程

sql - 如何从 SQL Server DateTime 数据类型仅返回日期

sql - 如何将带有十进制值的 NUMBER 作为参数传递给 FUNCTION 或 PROCEDURE

Java + Spring - 如何验证枚举

validation - 回调约束所针对的方法 "xxx"不存在 Symfony2

php - 将值放入 sql 枚举的最佳实践

oracle - JBoss EAP 6.x 在主键上带有 Hibernate Oracle 序列重复值

sql - 如何有效地找出哪条记录已被删除?

ios - 如何将居中正方形动画化到顶部