DB2表約束

DB2支持的表約束包括非空約束[NOT NULL],主鍵約束[PRIMARY KEY],唯一性約束[UNIQUE],外鍵約束[FOREIGN KEY]和檢查性約束[CHECK]
    1:非空約束[NOT NULL]
空值[NULL]是不存在的值,不是0也不是空字符串。默認情況下表中的是允許爲NULL的,在建表時如
NAME VARCHAR(20) NOT NULL,即標記該字段不能爲空。
    2:主鍵約束[PRIMARY KEY]
主鍵用於唯一的標識表中的每一行記錄,在一個表中,最多只能有一個主鍵約束[可沒有],主鍵既可以由一個列組成,也可以由兩個或以上的列組成[這種稱爲組合鍵],主鍵約束同時也具有非空約束的特徵。如果主鍵約束由一列組成,該主鍵約束被稱爲行級約束,如果主鍵由兩個或以上列組成,則該主鍵約束被稱爲表級約束。主鍵約束列不允許爲空值。
    ALTER TABLE TAB_NAME ADD PRIMARY KEY COL_NAME;
    3:唯一性約束[UNIQUE]
唯一性約束強調所在的列不允許有相同的值,但是它的定義要比主鍵約束弱,即它允許所在的列可以爲空值。唯一性約束的主要作用是在保證除主鍵列外,其他列值的唯一性。
    ALTER TABLE TAB_NAME ADD UNIQUE COL_NAME;
    4:外鍵約束[FOREIGN KEY]
一般的外鍵約束會使用兩個表進行關聯[也存在一個表自連接的情況],外鍵是指'當前表[外鍵表]'引用另一個表[即被引用的表]的某個列或某幾個列,而被引用的表的列必須具有主鍵約束或者唯一性約束。被引用表的列中不存在的數據不能出現在當前表對應的列中。一般情況下,當刪除被引用表中的數據時,該數據也不能出現在外鍵表的外鍵列中,如果外鍵列存儲了被引用表中將要刪除的數據,那麼對被引用的刪除操作將失敗,添加外鍵約束的語法如下:
    ALTER TABLE TAB_NAME ADD FOREIGN KEY COL_NAME REFERENCES TAB_NAME ON DELETE CASCAHE;
    5:檢查約束[CHECK]
指定某個字段內容必須在約束範圍之內,如定義的年齡字段不能超過200等
    ALTER TABLE TAB_NAME ADD CONSTRAINT COL_NAME CHECK (約束條件);
在設計時需要考慮這些約束是在數據庫層面實現還是在應用程序層實現,在數據層實現的好處是減少了開發工作量,對應用透明,但是若業務邏輯複雜的話,放在應用層實現邏輯更清晰,而且也會增加運維的負擔。例如在數據遷移時,如果表上有約束需要執行特別檢查
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章