3

有人可以向我解释为什么这个语句返回的列在 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';
4

1 回答 1

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:所描述的约束是外键约束。
...

于 2012-12-18T09:36:59.393 回答