After checking the docs, I am not exactly sure how to configure (if possible) a type such that SA will handle
the deletes if underlying database does not support CASCADE.
1. Is it now expected that all DBs support ondelete="CASCADE" and you are expected to use it?
2. Should ORM relations with cascade="all, delete" also passive_deletes=True?
Thanks,
Kris
For example:
I have some hierarchical types are self-referential and I would like to configure ondelete and onupdate.
the following Node class has a root FK so we can delete all elements in a single bang by deleting the root node.
node = Table('nodes', metadata=Metadata(),
Column('node_id', Integer, primary_key=True),
Column('comment', Text),
Column('parent_id', Integer, ForeignKey('node.node_id'), ondelete='cascade'),
Column('root_id', Integer, ForeignKey('node.node_id'), ondelete='cascade' )
mapper( Node, node,
properties = {
'children' : relation(Node, lazy=True, cascade="all, delete-orphan", passive_deletes=True,
backref = backref('parent', enable_typechecks=False, remote_side = [ node.c.node_id]),
primaryjoin = (node.c.node_id == node.c.parent_id)),
'allnodes': relation(Taggable, lazy=True,
cascade = "all, delete-orphan", passive_delete=True,
post_update=True,
primaryjoin = (node.c.node_id == taggable.c.root_id),
backref = backref('document', post_update=True,
, remote_side=[node.c.node_id]),
),