if table:
self._set_parent(table)
-
+
+ @property
+ def columns(self):
+ return self._elements.keys()
+
+ @property
+ def elements(self):
+ return self._elements.values()
+
def _set_parent(self, table):
super(ForeignKeyConstraint, self)._set_parent(table)
for col, fk in self._elements.iteritems():
"""Represent an ALTER TABLE DROP CONSTRAINT statement."""
__visit_name__ = "drop_constraint"
+
+ def __init__(self, element, cascade=False, **kw):
+ self.cascade = cascade
+ super(DropConstraint, self).__init__(element, **kw)
def _bind_or_error(schemaitem):
bind = schemaitem.bind
def visit_drop_constraint(self, drop):
preparer = self.preparer
- return "ALTER TABLE %s DROP CONSTRAINT %s" % (
+ return "ALTER TABLE %s DROP CONSTRAINT %s%s" % (
self.preparer.format_table(drop.element.table),
- self.preparer.format_constraint(drop.element)
+ self.preparer.format_constraint(drop.element),
+ " CASCADE" if drop.cascade else ""
)
def get_column_specification(self, column, **kwargs):
"ALTER TABLE tbl DROP CONSTRAINT my_test_constraint"
)
+ self.assert_compile(
+ schema.DropConstraint(constraint, cascade=True),
+ "ALTER TABLE tbl DROP CONSTRAINT my_test_constraint CASCADE"
+ )
+
constraint = ForeignKeyConstraint(["b"], ["t2.a"])
t.append_constraint(constraint)
self.assert_compile(