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.