[ 
https://issues.apache.org/jira/browse/DERBY-532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14014105#comment-14014105
 ] 

Dag H. Wanvik edited comment on DERBY-532 at 5/30/14 6:58 PM:
--------------------------------------------------------------

I just found a note in the standard which seems to ban foreign keys from 
relying on deferrable primary and unique keys. Cf.
Syntax Rule 5 in section 11.8 <referential constrain definition>: 

"The table constraint descriptor describing the <unique constraint definition> 
whose <unique column list> identifies the referenced columns shall indicate 
that the unique constraint is not deferrable."



was (Author: dagw):
I just found a note in the standard which seems to ban foreign keys from 
relying on deferrable primary keys. Cf.
Syntax Rule 5 in section 11.8 <referential constrain definition>: 

"The table constraint descriptor describing the <unique constraint definition> 
whose <unique column list> identifies the referenced columns shall indicate 
that the unique constraint is not deferrable."


> Support deferrable constraints
> ------------------------------
>
>                 Key: DERBY-532
>                 URL: https://issues.apache.org/jira/browse/DERBY-532
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Jörg von Frantzius
>            Assignee: Dag H. Wanvik
>              Labels: derby_triage10_11
>             Fix For: 10.11.0.0
>
>         Attachments: IndexDescriptor.html, IndexDescriptorImpl.html, 
> IndexRowGenerator.html, SortObserver.html, deferredConstraints.html, 
> deferredConstraints.html, deferredConstraints.html, deferredConstraints.html, 
> deferredConstraints.html, deferredConstraints.html, 
> derby-532-allow-pk-unique-1.diff, derby-532-allow-pk-unique-1.status, 
> derby-532-check-constraints-1.diff, derby-532-check-constraints-1.stat, 
> derby-532-check-constraints-2.diff, derby-532-check-constraints-2.stat, 
> derby-532-fix-drop-not-nullable.diff, derby-532-fix-drop-not-nullable.status, 
> derby-532-fix-metadata-1.diff, derby-532-fix-metadata-1.status, 
> derby-532-fk-1.diff, derby-532-fk-3.diff, derby-532-fk-3.stat, 
> derby-532-fk-4.diff, derby-532-fk-5.diff, derby-532-fk-5.stat, 
> derby-532-fk-6.diff, derby-532-fk-6.stat, derby-532-fk-7.diff, 
> derby-532-fk-7.stat, derby-532-fk-baseline-2.diff, 
> derby-532-fk-baseline.diff, derby-532-import-1.diff, 
> derby-532-import-1.status, derby-532-import-2.diff, derby-532-import-3.diff, 
> derby-532-import-3.status, derby-532-metadata-queries.diff, 
> derby-532-metadata-queries.status, derby-532-more-tests-1.diff, 
> derby-532-more-tests-1.stat, derby-532-nullableUniqueFix.diff, 
> derby-532-nullableUniqueFix.status, derby-532-post-scan-1.diff, 
> derby-532-post-scan-1.stat, derby-532-post-scan-2.diff, 
> derby-532-post-scan-2.stat, derby-532-post-scan-3.diff, 
> derby-532-post-scan-3.stat, derby-532-post-scan-4.diff, 
> derby-532-post-scan-4.stat, derby-532-serializable-scan-1.diff, 
> derby-532-serializable-scan-2.diff, derby-532-serializable-scan-2.stat, 
> derby-532-syntax-binding-dict-1.diff, derby-532-syntax-binding-dict-1.status, 
> derby-532-syntax-binding-dict-2.diff, derby-532-syntax-binding-dict-2.status, 
> derby-532-syntax-binding-dict-all-1.diff, derby-532-test-speedup.diff, 
> derby-532-test-speedup.status, 
> derby-532-test-with-default-deferrable-all-over.diff, 
> derby-532-testAlterConstraintInvalidation.diff, 
> derby-532-testAlterConstraintInvalidation.status, derby-532-unique-pk-1.diff, 
> derby-532-unique-pk-1.status, derby-532-unique-pk-2.diff, 
> derby-532-unique-pk-3.diff, derby-532-unique-pk-3.status, 
> derby-532-upgrade-1.diff, derby-532-upgrade-1.status, 
> derby-532-upgrade-1b.diff, derby-532-xa-1.diff, derby-532-xa-2.diff, 
> derby-532-xa-3.diff, derby-532-xa-3.status
>
>
> In many situations it is desirable to have constraints checking taking place 
> only at transaction commit time, and not before. If e.g. there is a chain of 
> foreign key constraints between tables, insert statements have to be ordered 
> to avoid constraint violations. If foreign key references are circular, the 
> DML has to be split into insert statements and subsequent update statements 
> by the user.
> In other words, with deferred constraints checking, life is much easier for 
> the user. Also it can create problems with softwares such as 
> object-relational mapping tools that are not prepared for statement ordering 
> and thus depend on deferred constraints checking.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to