File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Oracle/OAS and the fly likes Meaning of Enable Novalidate Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » Oracle/OAS
Bookmark "Meaning of Enable Novalidate" Watch "Meaning of Enable Novalidate" New topic

Meaning of Enable Novalidate

Mahtab Alam
Ranch Hand

Joined: Mar 28, 2012
Posts: 388

I created a table with a primary key constraint
Then I disabled the constraint and enabled it with enable novalidate.

And what I think enable novalidate do is "The constraint would be enabled without validating the constraint logic for the old existing data. Only the fresh new data would comply with the constraint logic."

Oracle Java Programmer , Oracle SQL Expert , Oracle Java Web Component Developer, Oracle Web Service Developer
Martin Vajsar

Joined: Aug 22, 2010
Posts: 3733

This would be typically used in a situation where you have rows in the table that violate the constraint, but want to force any modifications to the table (inserts or updates) to conform to the constraint. It doesn't make much sense with primary key, though. But for foreign constraints, or check constraints this might be useful from time to time.

With a small modification this is often used in data warehouses and OLAP applications. If you have a very large table (say, billions of rows) and you know the data are conform with the constraint, you can set it to ENABLE NOVALIDATE RELY. The RELY is important here - it tells the database that all rows are conform with the constraint and the database can use this knowledge to answer queries (so if you use ENABLE NOVALIDATE RELY, but the constraint is actually violated by the data, your queries might give wrong results - no wonder, you've "lied" to the database).
I agree. Here's the link:
subject: Meaning of Enable Novalidate
jQuery in Action, 3rd edition