RELY Constraint in View

时间:2015-03-21 07:36:54

标签: sql oracle oracle11g oracle10g sql-view

学习inline_constraint和out_of_line_constraint进行查看。我在oracle文档中得到了这个例子。http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8004.htm#i2126714

CREATE VIEW emp_sal (emp_id, last_name, 
      email UNIQUE RELY DISABLE NOVALIDATE,
   CONSTRAINT id_pk PRIMARY KEY (emp_id) RELY DISABLE NOVALIDATE)
   AS SELECT employee_id, last_name, email FROM employees;

我在这句话中有很多疑问:
1)什么是依赖constaint - 当查询通常访问视图而不是基表时,此约束很有用,因此DBA需要定义视图而不是表之间的数据关系。
但在此示例中,它不是物化视图,因此仅通过基表访问数据。能否解释一下功能以及何时使用依赖约束。
2)如果我们在此声明中禁用了它,那么使用唯一键是什么。

1 个答案:

答案 0 :(得分:0)

1)什么是依赖约束

  

查看约束,因为它们是非强制的,通常使用RELY参数指定,以使它们更有用。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#i1002565

  

指定RELY以在NOVALIDATE模式下激活现有约束,以便在未强制查询重写完整性模式下进行查询重写。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#i1002915

这意味着如果基于视图创建了物化视图,它可能依赖于约束来允许重写某些查询以使用物化视图而不是查询基表。

2)如果我们在此声明中禁用了它,那么使用唯一键是什么

必须禁用视图上的所有唯一约束。基本上这些可以用于允许查询重写。