mirror of
https://github.com/django/django.git
synced 2025-04-19 23:04:36 +00:00
magic-removal: Fixed #1082 -- Added a 'supports_constraints' variable for each database backend, and set SQLite's to False
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@1757 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
aa9fa3408d
commit
2d4acdc278
@ -117,18 +117,19 @@ def get_sql_create(app):
|
||||
|
||||
# Take care of any ALTER TABLE statements to add constraints
|
||||
# after the fact.
|
||||
if klass in pending_references:
|
||||
for rel_class, f in pending_references[klass]:
|
||||
rel_opts = rel_class._meta
|
||||
r_table = rel_opts.db_table
|
||||
r_col = f.column
|
||||
table = opts.db_table
|
||||
col = opts.get_field(f.rel.field_name).column
|
||||
final_output.append('ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
|
||||
(backend.quote_name(r_table),
|
||||
backend.quote_name("%s_referencing_%s_%s" % (r_col, table, col)),
|
||||
backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
|
||||
del pending_references[klass]
|
||||
if backend.supports_constraints:
|
||||
if klass in pending_references:
|
||||
for rel_class, f in pending_references[klass]:
|
||||
rel_opts = rel_class._meta
|
||||
r_table = rel_opts.db_table
|
||||
r_col = f.column
|
||||
table = opts.db_table
|
||||
col = opts.get_field(f.rel.field_name).column
|
||||
final_output.append('ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
|
||||
(backend.quote_name(r_table),
|
||||
backend.quote_name("%s_referencing_%s_%s" % (r_col, table, col)),
|
||||
backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
|
||||
del pending_references[klass]
|
||||
|
||||
# Keep track of the fact that we've created the table for this model.
|
||||
models_output.add(klass)
|
||||
|
@ -76,6 +76,8 @@ class DatabaseWrapper:
|
||||
self.connection.close()
|
||||
self.connection = None
|
||||
|
||||
supports_constraints = True
|
||||
|
||||
def quote_name(name):
|
||||
if name.startswith('[') and name.endswith(']'):
|
||||
return name # Quoting once is enough.
|
||||
|
@ -83,6 +83,8 @@ class DatabaseWrapper:
|
||||
self.connection.close()
|
||||
self.connection = None
|
||||
|
||||
supports_constraints = True
|
||||
|
||||
def quote_name(name):
|
||||
if name.startswith("`") and name.endswith("`"):
|
||||
return name # Quoting once is enough.
|
||||
|
@ -49,6 +49,8 @@ class DatabaseWrapper:
|
||||
self.connection.close()
|
||||
self.connection = None
|
||||
|
||||
supports_constraints = True
|
||||
|
||||
def quote_name(name):
|
||||
if name.startswith('"') and name.endswith('"'):
|
||||
return name # Quoting once is enough.
|
||||
|
@ -70,6 +70,8 @@ class SQLiteCursorWrapper(Database.Cursor):
|
||||
# XXX this seems too simple to be correct... is this right?
|
||||
return query % tuple("?" * num_params)
|
||||
|
||||
supports_constraints = False
|
||||
|
||||
def quote_name(name):
|
||||
if name.startswith('"') and name.endswith('"'):
|
||||
return name # Quoting once is enough.
|
||||
|
Loading…
x
Reference in New Issue
Block a user