summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2008-02-08 20:50:33 +0000
committerJason Kirtland <jek@discorporate.us>2008-02-08 20:50:33 +0000
commit1b228e848183b34046fc2ef34206344f88876f3a (patch)
tree946671e17dd19e4ce4005ceb9811be90ecbceb56 /lib/sqlalchemy/sql/compiler.py
parent426b6d9baf35585698540fefc4ef2bed0e10242f (diff)
downloadsqlalchemy-1b228e848183b34046fc2ef34206344f88876f3a.tar.gz
- Added deferrability support to constraints
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r--lib/sqlalchemy/sql/compiler.py14
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