W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
回想第2章中的weather
和cities
表??紤]以下問(wèn)題:我們希望確保在cities
表中有相應(yīng)項(xiàng)之前任何人都不能在weather
表中插入行。這叫做維持?jǐn)?shù)據(jù)的引用完整性。在過(guò)分簡(jiǎn)化的數(shù)據(jù)庫(kù)系統(tǒng)中,可以通過(guò)先檢查cities
表中是否有匹配的記錄存在,然后決定應(yīng)該接受還是拒絕即將插入weather
表的行。這種方法有一些問(wèn)題且并不方便,于是PostgreSQL可以為我們來(lái)解決:
新的表定義如下:
CREATE TABLE cities (
city varchar(80) primary key,
location point
);
CREATE TABLE weather (
city varchar(80) references cities(city),
temp_lo int,
temp_hi int,
prcp real,
date date
);
現(xiàn)在嘗試插入一個(gè)非法的記錄:
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".
外鍵的行為可以很好地根據(jù)應(yīng)用來(lái)調(diào)整。我們不會(huì)在這個(gè)教程里更深入地介紹,讀者可以參考第 5 章中的信息。正確使用外鍵無(wú)疑會(huì)提高數(shù)據(jù)庫(kù)應(yīng)用的質(zhì)量,因此強(qiáng)烈建議用戶學(xué)會(huì)如何使用它們。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: