@@ -592,7 +592,7 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
592
592
column_cache [table_id ] = columns
593
593
594
594
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
596
596
FROM sys.sysfkey fk
597
597
join sys.systab pt on fk.primary_table_id = pt.table_id
598
598
WHERE fk.foreign_table_id = :table_id
@@ -608,6 +608,7 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
608
608
609
609
for r in referential_constraints :
610
610
reftable_id = r ["reftable_id" ]
611
+ foreign_index_id = r ["foreign_index_id" ]
611
612
612
613
if reftable_id not in table_cache :
613
614
c = connection .execute (REFTABLE_SQL , table_id = reftable_id )
@@ -638,10 +639,12 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
638
639
join sys.sysidxcol pic on (fk.primary_index_id=pic.index_id and fk.primary_table_id=pic.table_id)
639
640
WHERE fk.primary_table_id = :reftable_id
640
641
and fk.foreign_table_id = :table_id
642
+ and fk.foreign_index_id = :foreign_index_id
641
643
""" )
642
644
ref_cols = connection .execute (REFCOLS_SQL ,
643
645
table_id = table_id ,
644
- reftable_id = reftable_id )
646
+ reftable_id = reftable_id ,
647
+ foreign_index_id = foreign_index_id )
645
648
for rc in ref_cols :
646
649
constrained_columns .append (columns [rc ["fokey" ]])
647
650
referred_columns .append (reftable_columns [rc ["refkey" ]])
0 commit comments