是否有人可以向我解释为什么这个语句会返回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';
答案 0 :(得分:4)
似乎SQL Server存储“传出”外键,而PostgreSQL存储“传入”外键。
SQL Server示例:http://sqlfiddle.com/#!6/57493/3
PostgreSQL示例:http://sqlfiddle.com/#!12/57493/5
不幸的是,ANSI标准没有说明哪一个是正确的。它只是说:
TABLE_CONSTRAINTS基表
CONSTRAINT_TYPE的值具有以下含义:
FOREIGN KEY:描述的约束是外键约束 ... 的