Skip to content

Commit 4e55f19

Browse files
authored
Merge pull request #10 from BarraQDA/foreign-keys
Use foreign_index_id in addition to reftable and table when selecting foreign keys
2 parents d2d707b + a848ba9 commit 4e55f19

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

Diff for: sqlalchemy_sqlany/base.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
592592
column_cache[table_id] = columns
593593

594594
REFCONSTRAINT_SQL = text("""
595-
SELECT pt.table_name AS name, pt.table_id AS reftable_id
595+
SELECT fk.foreign_index_id, pt.table_name AS name, pt.table_id AS reftable_id
596596
FROM sys.sysfkey fk
597597
join sys.systab pt on fk.primary_table_id = pt.table_id
598598
WHERE fk.foreign_table_id = :table_id
@@ -608,6 +608,7 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
608608

609609
for r in referential_constraints:
610610
reftable_id = r["reftable_id"]
611+
foreign_index_id = r["foreign_index_id"]
611612

612613
if reftable_id not in table_cache:
613614
c = connection.execute(REFTABLE_SQL, table_id=reftable_id)
@@ -638,10 +639,12 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
638639
join sys.sysidxcol pic on (fk.primary_index_id=pic.index_id and fk.primary_table_id=pic.table_id)
639640
WHERE fk.primary_table_id = :reftable_id
640641
and fk.foreign_table_id = :table_id
642+
and fk.foreign_index_id = :foreign_index_id
641643
""")
642644
ref_cols = connection.execute(REFCOLS_SQL,
643645
table_id=table_id,
644-
reftable_id=reftable_id)
646+
reftable_id=reftable_id,
647+
foreign_index_id=foreign_index_id)
645648
for rc in ref_cols:
646649
constrained_columns.append(columns[rc["fokey"]])
647650
referred_columns.append(reftable_columns[rc["refkey"]])

0 commit comments

Comments
 (0)