diff options
author | Jason Kirtland <jek@discorporate.us> | 2008-02-08 20:50:33 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2008-02-08 20:50:33 +0000 |
commit | 1b228e848183b34046fc2ef34206344f88876f3a (patch) | |
tree | 946671e17dd19e4ce4005ceb9811be90ecbceb56 /lib/sqlalchemy/sql/compiler.py | |
parent | 426b6d9baf35585698540fefc4ef2bed0e10242f (diff) | |
download | sqlalchemy-1b228e848183b34046fc2ef34206344f88876f3a.tar.gz |
- Added deferrability support to constraints
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 43950a9a6..02f6efce1 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -844,9 +844,11 @@ class SchemaGenerator(DDLBase): self.append("CONSTRAINT %s " % self.preparer.format_constraint(constraint)) self.append(" CHECK (%s)" % constraint.sqltext) + self.define_constraint_deferrability(constraint) def visit_column_check_constraint(self, constraint): self.append(" CHECK (%s)" % constraint.sqltext) + self.define_constraint_deferrability(constraint) def visit_primary_key_constraint(self, constraint): if len(constraint) == 0: @@ -856,6 +858,7 @@ class SchemaGenerator(DDLBase): self.append("CONSTRAINT %s " % self.preparer.format_constraint(constraint)) self.append("PRIMARY KEY ") self.append("(%s)" % ', '.join([self.preparer.quote(c, c.name) for c in constraint])) + self.define_constraint_deferrability(constraint) def visit_foreign_key_constraint(self, constraint): if constraint.use_alter and self.dialect.supports_alter: @@ -883,6 +886,7 @@ class SchemaGenerator(DDLBase): self.append(" ON DELETE %s" % constraint.ondelete) if constraint.onupdate is not None: self.append(" ON UPDATE %s" % constraint.onupdate) + self.define_constraint_deferrability(constraint) def visit_unique_constraint(self, constraint): self.append(", \n\t") @@ -890,6 +894,16 @@ class SchemaGenerator(DDLBase): self.append("CONSTRAINT %s " % self.preparer.format_constraint(constraint)) self.append(" UNIQUE (%s)" % (', '.join([self.preparer.quote(c, c.name) for c in constraint]))) + self.define_constraint_deferrability(constraint) + + def define_constraint_deferrability(self, constraint): + if constraint.deferrable is not None: + if constraint.deferrable: + self.append(" DEFERRABLE") + else: + self.append(" NOT DEFERRABLE") + if constraint.initially is not None: + self.append(" INITIALLY %s" % constraint.initially) def visit_column(self, column): pass |