视图中的 RELY 约束
RELY Constraint in 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) 什么是 rely constaint - 当查询通常访问视图而不是基础 table 时,此约束很有用,因此 DBA 需要定义视图之间的数据关系而不是table秒。
但在此示例中,它不是物化视图,因此数据将仅通过基础 table 访问。您能否解释一下函数以及何时使用依赖约束。
2) 如果我们像在这个语句中那样禁用了唯一键,那么它有什么用呢。
1) 什么是依赖约束
View constraints, because they are unenforced, are usually specified with the RELY parameter to make them more useful.
http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#i1002565
Specify RELY to activate an existing constraint in NOVALIDATE mode for query rewrite in an unenforced query rewrite integrity mode.
http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#i1002915
这意味着如果实体化视图是基于视图创建的,它可能依赖于允许重写某些查询以使用实体化视图而不是查询基表的约束。
2) 如果我们像在这个语句中那样禁用它,那么唯一键的用途是什么
必须禁用对视图的所有唯一约束。基本上这些可以用于允许查询重写。
同时学习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) 什么是 rely constaint - 当查询通常访问视图而不是基础 table 时,此约束很有用,因此 DBA 需要定义视图之间的数据关系而不是table秒。
但在此示例中,它不是物化视图,因此数据将仅通过基础 table 访问。您能否解释一下函数以及何时使用依赖约束。
2) 如果我们像在这个语句中那样禁用了唯一键,那么它有什么用呢。
1) 什么是依赖约束
View constraints, because they are unenforced, are usually specified with the RELY parameter to make them more useful.
http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#i1002565
Specify RELY to activate an existing constraint in NOVALIDATE mode for query rewrite in an unenforced query rewrite integrity mode.
http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#i1002915
这意味着如果实体化视图是基于视图创建的,它可能依赖于允许重写某些查询以使用实体化视图而不是查询基表的约束。
2) 如果我们像在这个语句中那样禁用它,那么唯一键的用途是什么
必须禁用对视图的所有唯一约束。基本上这些可以用于允许查询重写。