Author: ianb
Date: 2006-02-11 03:37:34 -0700 (Sat, 11 Feb 2006)
New Revision: 1595
Modified:
SQLObject/trunk/sqlobject/col.py
SQLObject/trunk/sqlobject/mysql/mysqlconnection.py
Log:
Applied SF [ 1423877 ] createTable broken for mysql in 0.8dev from Rick Richardson
Modified: SQLObject/trunk/sqlobject/col.py
===================================================================
--- SQLObject/trunk/sqlobject/col.py 2006-02-11 10:33:06 UTC (rev 1594)
+++ SQLObject/trunk/sqlobject/col.py 2006-02-11 10:37:34 UTC (rev 1595)
@@ -777,9 +777,33 @@
'sTName': sTName})
return constraint
+ def mysqlCreateReferenceConstraint(self):
+ sTName = self.soClass.sqlmeta.table
+ other = findClass(self.foreignKey, self.soClass.sqlmeta.registry)
+ tName = other.sqlmeta.table
+ idName = other.sqlmeta.idName
+ if self.cascade is not None:
+ if self.cascade == 'null':
+ action = 'ON DELETE SET NULL'
+ elif self.cascade:
+ action = 'ON DELETE CASCADE'
+ else:
+ action = 'ON DELETE RESTRICT'
+ else:
+ action = ''
+ constraint = ('ALTER TABLE %(sTName)s ADD CONSTRAINT %(sTName)s_%(colName)s_to_%(tName)s '
+ 'FOREIGN KEY (%(colName)s) '
+ 'REFERENCES %(tName)s (%(idName)s) '
+ '%(action)s' %
+ {'tName': tName,
+ 'colName': self.dbName,
+ 'idName': idName,
+ 'action': action,
+ 'sTName': sTName})
+ return constraint
+
def mysqlCreateSQL(self):
- sql = SOKeyCol.mysqlCreateSQL(self)
- return sql
+ return SOKeyCol.mysqlCreateSQL(self)
def mysqlCreateReferenceConstraint(self):
return None
Modified: SQLObject/trunk/sqlobject/mysql/mysqlconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/mysql/mysqlconnection.py 2006-02-11 10:33:06 UTC (rev 1594)
+++ SQLObject/trunk/sqlobject/mysql/mysqlconnection.py 2006-02-11 10:37:34 UTC (rev 1595)
@@ -110,6 +110,9 @@
def createIndexSQL(self, soClass, index):
return index.mysqlCreateIndexSQL(soClass)
+ def createReferenceConstraint(self, soClass, col):
+ return col.mysqlCreateReferenceConstraint()
+
def createIDColumn(self, soClass):
if soClass.sqlmeta.idType == str:
return '%s TEXT PRIMARY KEY' % soClass.sqlmeta.idName
|