There's various error conditions we should have added in 0.5 but have  
not.   We should look into raising warnings in 0.5 and raising errors  
in 0.6.  The conditions are, using "delete-orphan" without "delete",  
and using "delete-orphan" with "secondary".   Neither is supported at  
this time.



On Jan 15, 2009, at 11:30 AM, GustaV wrote:

>
> Hi all,
> I try to set up a many-to-many relation with an association object.
>
> But I want something not usual: I want the child object deleted when
> not owned by any parent anymore.
> This is for a messages/recipients relation: the message is useless
> when everybody removed it from its mailbox!
>
> I tried that, but it doesn't work:
>
> class Parent(meta.DeclarativeBase):
>    id = Column(types.Integer, primary_key=True)
>
> class Child(meta.DeclarativeBase):
>    id = Column(types.Integer, primary_key=True)
>
> class Assoc(meta.DeclarativeBase):
>    p_id = Column(types.Integer,
>                  ForeignKey(Parent.id))
>    c_id = Column(types.Integer,
>                  ForeignKey(Parent.id))
>
>    parent = relation(Parent,
>                      backref=backref('children',
>                                cascade='all, delete-orphan'))
>    child = relation(Child,
>                     backref='parents',
>                     cascade='delete-orphan')
>
> I expect "child = relation(Child, backref='parents', cascade='delete-
> orphan')" to forward deletes to child when it is an orphan. But it
> looks like it forward the delete even if it is not an orphan yet...
>
> It that configuration:
>
>   p1 = Parent()
>   p2 = Parent()
>   c = Child()
>   assoc1 = Assoc(parent=p1, child=c)
>   assoc2 = Assoc(parent=p2, child=c)
>
> p1.children = [ ] will lead to:
> - delete assoc1 (ok)
> - delete c (not ok)
> - update assoc2.c_id = null (not ok)
>
> So why is it not really a delete-orphan? :)
>
> Thanks
>
> GustaV
> >


--~--~---------~--~----~------------~-------~--~----~
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