bojanb wrote:
>
> I have columns in my database that logically shouldn't be null.
> However, I allow them to be null while the user is editing (creating)
> objects interactively. As this is done in a transaction, and values
> are checked before a commit, it's assured that nobody else ever sees
> invalid values and the integrity of the data is preserved.
>
> This would be an ideal use case for deferred constraints;
> unfortunately, Postgres doesn't support deferred CHECK constraints so
> the validation is done in code. This in turn means that the fields are
> not declared as "nullable=False".
>
> This leads to a problem when referential integrity needs to be
> preserved. When a referred object is deleted, SQLA's default behavior
> is to set child's object foreign key field to None (e.g. see
> http://groups.google.com/group/sqlalchemy/browse_thread/thread/1f9990e3a9a2a869).
> This in turn lets the RDBMS delete the referred object, instead of
> throwing referential integrity exception. I am left with hanging child
> objects even though I specified ondelete='RESTRICT' for the relation.
>
> Is there any way around this? I've tried passive_deletes='all' but it
> didn't do the trick...

why not just add a @validates method to your class, set for the foreign
key attribute, which ensures that the incoming value is not "None" ?



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to