做設(shè)計的搜素材上什么網(wǎng)站廣州seo公司
數(shù)據(jù)完整性對于任何數(shù)據(jù)庫系統(tǒng)來說都是很重要的一方面,它確保存儲的數(shù)據(jù)保持準(zhǔn)確、一致且有意義的。在 PostgreSQL 中,維護(hù)數(shù)據(jù)完整性的一個強(qiáng)大工具是使用檢查約束。這些約束允許你定義數(shù)據(jù)必須遵守的規(guī)則,以防止無效數(shù)據(jù)的插入或修改。本文,我們將探討如何在 PostgreSQL 中使用檢查約束去驗證數(shù)據(jù),并使用免費的?DVD Rental Database?作為演示案例。
了解檢查約束
檢查約束是限制可以輸入到表中的一個列或一組列中的值的規(guī)則。這些規(guī)則由數(shù)據(jù)庫系統(tǒng)強(qiáng)制執(zhí)行,防止插入或修改違反指定條件的行。檢查約束是使用?CHECK
?關(guān)鍵字定義的,后面跟著一個計算結(jié)果為布爾值的表達(dá)式。
驗證租賃期限
假設(shè)有一個場景,這個場景使用“dvdrental”數(shù)據(jù)庫中“rental”表的修改版,該表包含一個“rental_duration”列。在?Navicat?表設(shè)計器中,這個表的定義可能如下所示:
現(xiàn)在,假設(shè)我們希望確保每次租賃的時長始終大于零天。我們可以通過在“rentals_with_rental_period”表中添加檢查約束來實現(xiàn)這一目標(biāo),具體做法如下:
ALTER TABLE rentals_with_rental_period
ADD CONSTRAINT rental_duration_check
CHECK (rental_duration > 0);
In Navicat we can add a check constraint in the "Checks" tab of the Table Designer. We just need to supply an expression and optional name. Navicat will create a unique name for us if we don't supply one!
在 Navicat 中,我們可以在表設(shè)計器的“檢查”選項卡中添加檢查約束。我們只需要提供一個表達(dá)式和可選的名稱。如果我們不提供名稱,Navicat 會為我們創(chuàng)建一個唯一的名稱!
通過執(zhí)行此約束,任何嘗試在“rentals_with_rental_period”表中插入或更新一行,且租賃時長小于或等于零的操作都將導(dǎo)致錯誤,從而確保只允許有效的租賃時長。
確保有效評級
“dvdrental”數(shù)據(jù)庫中“film”表的另一個例子涉及驗證電影評級。假設(shè)我們想要將評級限制為某些特定值,如“G”、“PG”、“PG-13”、“R”或“NC-17”。我們可以通過檢查約束來實現(xiàn)這一點:
ALTER TABLE film
ADD CONSTRAINT film_rating_check
CHECK (rating IN ('G', 'PG', 'PG-13', 'R', 'NC-17'));
在 Navicat 表設(shè)計器中,這是相同的約束:
現(xiàn)在,任何嘗試在“film”表中插入或更新評級,但其值不是指定值之一的行的操作都將被拒絕,從而確保只允許有效的評級。
處理空值(NULL)
需要注意的是,除非約束中特別包含檢查?NULL
?的條件,否則檢查約束不會應(yīng)用于包含?NULL
?值的一行或多行。例如,為了強(qiáng)制“film”表中的“rental_rate”列始終大于零且不為?NULL
?,我們將使用以下約束:
ALTER TABLE film
ADD CONSTRAINT film_rental_rate_check
CHECK (rental_rate > 0 AND rental_rate IS NOT NULL);
在 Navicat 表設(shè)計器中,相同的約束如下:
結(jié)語
檢查約束是一個確保 PostgreSQL 數(shù)據(jù)完整性的強(qiáng)大工具。通過定義數(shù)據(jù)必須遵守的規(guī)則,可以防止插入或修改無效數(shù)據(jù),從而幫助維護(hù)數(shù)據(jù)庫的準(zhǔn)確性和一致性。將檢查約束納入數(shù)據(jù)庫設(shè)計,可以構(gòu)建穩(wěn)定且可靠的數(shù)據(jù)系統(tǒng),滿足組織的需求。
PostgreSQL 相關(guān)技術(shù)內(nèi)容
PostgreSQL 與 Navicat:數(shù)據(jù)庫行業(yè)的中堅力量
在?PostgreSQL 中存儲三元數(shù)據(jù)
PostgreSQL 的實體化視圖介紹
PostgreSQL 實體化視圖的使用
為什么在下一個 IT 項目中選擇使用 PostgreSQL
PostgreSQL 中的多版本并發(fā)控制
使用 Navicat Monitor 3.0 監(jiān)控 PostgreSQL
Navicat Monitor 3 中查看 PostgreSQL 實例詳細(xì)信息
使用 Navicat Monitor 3 跟蹤 PostgreSQL 實例查詢
在 PostgreSQL 中設(shè)置查詢超時
更多技術(shù)干貨,歡迎點擊 這里 關(guān)注 Navicat 技術(shù)智庫。