回想一下 第二章 中的 weather
表和 cities
表。考慮以下問題:您想確保 weather
表中插入的行在 cities
表中都有匹配的條目。這被稱為維護資料的 參照完整性。在簡陋的資料庫系統中,這(如果實現的話)會透過首先檢視 cities
表來檢查是否存在匹配的記錄,然後插入或拒絕新的 weather
記錄來實現。這種方法有許多問題,而且非常不方便,所以 PostgreSQL 可以為您處理這個問題。
表的宣告將如下所示
CREATE TABLE cities ( name varchar(80) primary key, location point ); CREATE TABLE weather ( city varchar(80) references cities(name), 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 "weather_city_fkey" DETAIL: Key (city)=(Berkeley) is not present in table "cities".
外部索引鍵的行為可以根據您的應用程式進行精細調整。在本教程中,我們將不超出這個簡單的示例,而是引用 第五章 以獲取更多資訊。正確使用外部索引鍵肯定會提高您的資料庫應用程式的質量,因此強烈建議您瞭解它們。
如果您在文件中看到任何不正確、與您對特定功能的經驗不符或需要進一步澄清的內容,請使用 此表單 來報告文件問題。