[pgsql-jp: 32287] 外部キーとテーブルの継承

DODO dodo @ o-su.com.au
2004年 2月 19日 (木) 08:50:32 JST


いつもお世話になっております。

外部キーの被参照テーブルに、継承したテーブルがあった場合、
その継承したテーブルまで指定した値があるかどうか検索
してくれないのでしょうか。

これは少々不便なのですが,仕様なのでしょうか。
過去ログに同じような記事がないため投稿いたします。

Postgres は 7.3.4 です。

例:3つのテーブルがあります。

CREATE TABLE "box" (
  "id" SERIAL, 
  PRIMARY KEY("id")
);

CREATE TABLE "box_addr" (
  "mes" TEXT
)INHERITS ("box");

CREATE TABLE "box_file" (
 "box_addr_id" INTEGER NOT NULL, 
 "filename" TEXT,
  FOREIGN KEY ("box_file-box_addr_id") REFERENCES "box"("id")
  ON DELETE CASCADE
  ON UPDATE CASCADE
  NOT DEFERRABLE
);

ここで、box_addrに一行入れます。

insert into box_addr(mes) values("mes");

ここで id は 1 が挿入されたとします。

つぎに、box_fileに1行入れようとすると、参照エラーとなり
挿入できません。

insert into box_file( box_addr_id, filename) values(1, "filename");

ERROR: box_file-box_addr_id referential integrity violation

REFERENCES "box"("id") の部分は、継承されたテーブルまでは
チェックしてくれないでしょうか。
それとも、なにかオプションがあるのでしょうか。

百々






pgsql-jp メーリングリストの案内