SQL Server 和 postrgesql 中的 SQL 标准



有人可以向我解释为什么此语句返回在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的值具有以下含义:
外键:所描述的约束是外键约束。
...

最新更新