SQL Server和postgresql中的SQL标准

时间:2012-12-18 09:19:14

标签: sql sql-server postgresql

是否有人可以向我解释为什么这个语句会返回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';

1 个答案:

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