如何在引用中的「富」的PK「欄中的」創建FK?
與您目前的結構,你不能。
外鍵引用的目標必須聲明爲PRIMARY KEY或UNIQUE。因此,無論這個
CREATE TABLE foo (
id SERIAL PRIMARY KEY,
foo_created_on ABSTIME,
foo_deactivated_on ABSTIME,
UNIQUE (id, foo_created_on)
);
或本
CREATE TABLE foo (
id SERIAL,
foo_created_on ABSTIME,
foo_deactivated_on ABSTIME,
PRIMARY KEY (id, foo_created_on),
UNIQUE (id)
);
將工作作爲bar.foo_id目標。然後吧有一個簡單的參考。
CREATE TABLE bar (
id SERIAL,
bar_created_on ABSTIME,
bar_deactivated_on ABSTIME,
foo_id REFERENCES foo (id),
PRIMARY KEY (id, bar_created_on)
);
如果要引用最初在foo中聲明的主鍵,則必須將該主鍵存儲在bar中。你必須存儲它的全部,而不是它的一部分。所以,如果不修改foo,你可以像這樣建立條形圖。
CREATE TABLE bar (
id SERIAL,
bar_created_on ABSTIME,
bar_deactivated_on ABSTIME,
foo_id INTEGER NOT NULL,
foo_created_on ABSTIME NOT NULL,
FOREIGN KEY (foo_id, foo_created_on) REFERENCES foo (foo_id, foo_created_on),
PRIMARY KEY (id, bar_created_on)
);
Btw:「ABSTIME」數據類型是不支持的。您應該使用DATE或TIMESTAMP。 – 2012-04-02 22:36:02