Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion sqlalchemy_sqlany/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -600,7 +600,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
Expand All @@ -618,6 +618,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:
Expand Down Expand Up @@ -648,11 +649,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:
Expand Down