def visit_check_constraint(self, constraint):
text = ""
if constraint.name is not None:
- text += "CONSTRAINT %s " % \
- self.preparer.format_constraint(constraint)
+ formatted_name = self.preparer.format_constraint(constraint)
+ if formatted_name is not None:
+ text += "CONSTRAINT %s " % formatted_name
text += "CHECK (%s)" % self.sql_compiler.process(constraint.sqltext,
include_table=False,
literal_binds=True)
def visit_column_check_constraint(self, constraint):
text = ""
if constraint.name is not None:
- text += "CONSTRAINT %s " % \
- self.preparer.format_constraint(constraint)
+ formatted_name = self.preparer.format_constraint(constraint)
+ if formatted_name is not None:
+ text += "CONSTRAINT %s " % formatted_name
text += "CHECK (%s)" % constraint.sqltext
text += self.define_constraint_deferrability(constraint)
return text
return ''
text = ""
if constraint.name is not None:
- text += "CONSTRAINT %s " % \
- self.preparer.format_constraint(constraint)
+ formatted_name = self.preparer.format_constraint(constraint)
+ if formatted_name is not None:
+ text += "CONSTRAINT %s " % formatted_name
text += "PRIMARY KEY "
text += "(%s)" % ', '.join(self.preparer.quote(c.name)
for c in constraint)
preparer = self.dialect.identifier_preparer
text = ""
if constraint.name is not None:
- text += "CONSTRAINT %s " % \
- preparer.format_constraint(constraint)
+ formatted_name = self.preparer.format_constraint(constraint)
+ if formatted_name is not None:
+ text += "CONSTRAINT %s " % formatted_name
remote_table = list(constraint._elements.values())[0].column.table
text += "FOREIGN KEY(%s) REFERENCES %s (%s)" % (
', '.join(preparer.quote(f.parent.name)
for f in constraint._elements.values()),
self.define_constraint_remote_table(
- constraint, remote_table, preparer),
+ constraint, remote_table, preparer),
', '.join(preparer.quote(f.column.name)
for f in constraint._elements.values())
)
return ''
text = ""
if constraint.name is not None:
- text += "CONSTRAINT %s " % \
- self.preparer.format_constraint(constraint)
+ formatted_name = self.preparer.format_constraint(constraint)
+ text += "CONSTRAINT %s " % formatted_name
text += "UNIQUE (%s)" % (
- ', '.join(self.preparer.quote(c.name)
- for c in constraint))
+ ', '.join(self.preparer.quote(c.name)
+ for c in constraint))
text += self.define_constraint_deferrability(constraint)
return text
constraint, constraint.table)
if name:
return self.quote(name)
+ elif isinstance(constraint.name, elements._defer_none_name):
+ return None
return self.quote(constraint.name)
def format_table(self, table, use_schema=True, name=None):
schema.CreateTable(u1).compile
)
+ def test_schematype_no_ck_name_boolean_no_name(self):
+ m1 = MetaData() # no naming convention
+
+ u1 = Table(
+ 'user', m1,
+ Column('x', Boolean())
+ )
+ # constraint gets special _defer_none_name
+ eq_(
+ [c for c in u1.constraints
+ if isinstance(c, CheckConstraint)][0].name, "_unnamed_"
+ )
+
+ self.assert_compile(
+ schema.CreateTable(u1),
+ "CREATE TABLE user (x BOOLEAN, CHECK (x IN (0, 1)))"
+ )
+
+
def test_ck_constraint_redundant_event(self):
u1 = self._fixture(naming_convention={
"ck": "ck_%(table_name)s_%(constraint_name)s"})