概述
45.6 约束和注释
约束和注释有助于理解表和列之间的相互联系。注释只是信息,不能对存储在所描述对象中的数据施加任何条件。而约束定义了数据有效的条件。典型的约束 包括NOT NULL、UNIQUE、PRIMARY KEY 和FOREIGN KEY。以下几节将介绍如何从数据字典中检索有关约束和注释的数据。
45.6.1 约束:USER_CONSTRAINTS
通过USER_CONSTRAINTS 视图,可以访问约束信息。此信息在试图更改数据约束或解决应用程序的数据问题时非常有用。下面的清单列出了该视图的列。
- COLUMN_NAME
- ------------------------------
- OWNER
- CONSTRAINT_NAME
- CONSTRAINT_TYPE
- TABLE_NAME
- SEARCH_CONDITION
- R_OWNER
- R_CONSTRAINT_NAME
- DELETE_RULE
- STATUS
- DEFERRABLE
- DEFERRED
- VALIDATED
- GENERATED
- BAD
- RELY
- LAST_CHANGE
- INDEX_OWNER
- INDEX_NAME
- INVALID
- VIEW_RELATED
尽管这是1 个“USER”视图,但却包含1 个Owner 列。在此视图中,Owner 指约束的所有者,而不是表的所有者(用户)。
Constraint_Type 列的有效值如下:
C CHECK 约束,包括一些NOT NULL
P 主键约束
R 外键(引用)约束
U 唯一约束
V WITH CHECK OPTION 约束(用于视图)
O WITH READ ONLY 约束(用于视图)
要想获取关于约束的有用信息,理解约束类型很重要。
外键约束总是具有R_Owner 和R_Constraint_Name 这两列的值。这两列指出外键引用了哪个约束。一个外键引用另一个约束,而不是另一列。由于列的 NOT NULL 约束将存储为CHECK 约束,因此它们的Constrain_Type 为C。
查询USER_CONSTRAINTS 视图将会得到表中所有约束的名称。这在解释只提供违反约束的约束名的错误消息时非常有用。
一旦知道了约束的名称和类型,就能通过USER_CONS_COLUMNS 视图检查与之相关的列,该内容将在45.6.2 节介绍。
如果在创建约束时未给约束赋予名称,则Oracle 将生成一个唯一的约束名。详细信息请参阅附录A 中的“INTEGRITY CONSTRAINTS ”部分。如果约束名由系统生成,则通过Generated 列指出该事实。
如果延迟一个约束(由Deferred 列指出),则该约束不能在事务处理期间实施。例如,如果在相关表中执行大量的更新操作,并且不能保证事务处理的顺序正确,就可以决定延迟在表上检查的约束,直到所有的更新操作完成为止。
ALL_CONSTRAINTS 视图列出了用户或PUBLIC 能访问的所有表的约束。DBA_CONSTRAINTS 视图列出了数据库中的所有约束。这些视图都有与USER_CONSTRAINTS视图相同的列组(因为它们都包含Owner 列)。
http://book.51cto.com/art/201007/212406.htm
最后
以上就是感性小白菜为你收集整理的约束:USER_CONSTRAINTS的全部内容,希望文章能够帮你解决约束:USER_CONSTRAINTS所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复