Hi all,I'm trying to get deletes and updates cascaded down from a parent
object to the child objects (connected by ForeignKey).
It all seems pretty simple in the docs, but I can't get it to work! I'm
using MySQL with the InnoDB engine, and have played with all the variation
of the onupdate, ondelete and cascade arguments I can think of.
The problem is that immediately before the DELETE command is sent to MySQL,
there are UPDATE commands nulling out the foreign key references of the
child objects, so MySQL doesn't trigger it's ON DELETE CASCADE action, and
for some reason cascade="all, delete-orphan" doesn't clean up the children
with NULL FKs.
Here's a simplified model:
users_table = Table('tg_user', metadata,
Column('user_id', Integer, primary_key=True),
Column('created', DateTime, default=datetime.now),
mysql_engine='InnoDB',
)
hat_table = Table('hat', metadata,
Column('id', Integer, primary_key=True),
Column('name', Unicode(100)),
Column('user_id', Integer, ForeignKey('tg_user.user_id'),
onupdate='CASCADE', ondelete='CASCADE'),
mysql_engine='InnoDB',
)
class User(object):
pass
class Hat(object):
pass
mapper(User, users_table)
mapper(Hat, hat_table,
properties = {
'user': relation(User, backref="hats", cascade="all, delete,
delete-orphan"),
}
)
And the log from SA when I do a User.delete:
BEGIN
UPDATE hat SET user_id=%s WHERE hat.id = %s
[None, 1L]
DELETE FROM tg_user WHERE tg_user.user_id = %s
[1L]
COMMIT
Any help would be much appreciated!
James
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---