有人可以向我解释为什么此语句返回在SQL Server中是FK但在postgresql中不返回任何列吗?
两个RDBMS上的表是相同的,并且确实有FK
select *
from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu,
INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
where ccu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
and ccu.TABLE_NAME = 'table_name'
and tc.CONSTRAINT_TYPE = 'FOREIGN KEY';
似乎SQL Server存储"传出"外键,而PostgreSQL存储"传入"外键。
SQL Server 示例:http://sqlfiddle.com/#!6/57493/3
PostgreSQL 示例:http://sqlfiddle.com/#!12/57493/5
不幸的是,ANSI标准没有说哪一个是正确的。它只是说:
TABLE_CONSTRAINTS基表
CONSTRAINT_TYPE的值具有以下含义:
外键:所描述的约束是外键约束。
...