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 に答える