Transaction-Level Checking
When you set the transaction mode of constraints to DEFERRED, statement-level
checking is turned off, and all (or the specified) constraints are not checked
until the transaction is committed. If a constraint violation occurs while
the transaction is being committed, the transaction is rolled back.
Tip: If you defer checking a primary-key constraint,
checking the not-NULL constraint for that column or set of columns is also
deferred.