From d47d8044f20c73e042ac2c7560e41a039cd754fe Mon Sep 17 00:00:00 2001 From: Jonathan Schultz Date: Sun, 15 Jul 2018 14:12:40 +0800 Subject: [PATCH] Added index_id in foreign key selection --- sqlalchemy_sqlany/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sqlalchemy_sqlany/base.py b/sqlalchemy_sqlany/base.py index eee8851..def0045 100644 --- a/sqlalchemy_sqlany/base.py +++ b/sqlalchemy_sqlany/base.py @@ -601,7 +601,7 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw): column_cache[table_id] = columns REFCONSTRAINT_SQL = text(""" - SELECT fk.foreign_index_id, i.index_name AS name, pt.table_id AS reftable_id + SELECT fk.foreign_index_id, i.index_name AS name, i.index_id, pt.table_id AS reftable_id FROM sys.sysfkey fk join sys.systab pt on fk.primary_table_id = pt.table_id join sys.sysidx i on i.table_id=fk.primary_table_id @@ -619,6 +619,7 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw): for r in referential_constraints: reftable_id = r["reftable_id"] + index_id = r["index_id"] foreign_index_id = r["foreign_index_id"] if reftable_id not in table_cache: @@ -649,11 +650,13 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw): join sys.sysidxcol ic on (fk.foreign_index_id=ic.index_id and fk.foreign_table_id=ic.table_id) join sys.sysidxcol pic on (fk.primary_index_id=pic.index_id and fk.primary_table_id=pic.table_id) WHERE fk.primary_table_id = :reftable_id + and fk.primary_index_id = :index_id and fk.foreign_table_id = :table_id and fk.foreign_index_id = :foreign_index_id """) ref_cols = connection.execute(REFCOLS_SQL, table_id=table_id, + index_id=index_id, reftable_id=reftable_id, foreign_index_id=foreign_index_id) for rc in ref_cols: