只有逻辑约束(logical constraint)(即由用户声明而非 Oracle 强制的约束)可以在视图上定义。定义在视图上的约束不是为了保证业务规则的正确,而是为了识别多维数据(multidimensional data)。以下约束可以定义在视图上:
- 主键约束(Primary Key constraint)
- 唯一约束(Unique constraint)
- 引用完整性约束(Referential Integrity constraint)
由于定义在视图上的约束只是声明性质的(declarative),因此视图约束(view constraint)的状态(valid state)只能被设为 DISABLE,或 NOVALIDATE。由于基于视图的约束还可能被用来控制复杂的查询重写(query rewrite),因此 RELY 或 NORELY 状态也是可用的。当重写完整性级别(rewrite integrity level)被设为信任模式(trusted mode)时,将视图约束设置为 RELY 状态将允许使用查询重写。
例如:create view view_name (column_name primary key rely disable novaliate,......) as select .......
或者:alter view view_name add constraint constraint_name unique(column_name....) rely disable novalidate;