| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 3. 高級特性 | Fast Forward | Next |
回憶一下 Chapter 2 裡的 weather 和 cities 表。考慮一下下面的問題:你想確保沒有人可以在 weather 表裡插入一條在 cities 表裡沒有匹配記錄的數據行。 這就叫維護你的表的參考完整性。 在簡單的數據庫系統裡,實現(如果也叫實現)這個特性的方法 通常是先看看 cities 表裡是否有匹配的記錄, 然後插入或者拒絕新的 weather 記錄。 這個方法有許多問題,而且非常不便,因此 PostgreSQL 可以為你做這些。
新的表聲明看起來會象下面這樣:
CREATE TABLE cities (
city varchar(80) primary key,
location point
);
CREATE TABLE weather (
city varchar(80) references cities,
temp_lo int,
temp_hi int,
prcp real,
date date
);
然後我們試圖插入一條非法的記錄:
INSERT INTO weather VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ERROR: insert or update on table "weather" violates foreign key constraint "$1" DETAIL: Key (city)=(Berkeley) is not present in table "cities".
外鍵的行為可以為你的應用仔細調節。在這份教程裡我們就不再多說了,而是請你參考Chapter 5獲取更多的信息。 正確使用外鍵無疑將改進你的數據庫應用,所以我們強烈建議你學習它們。