PostgreSQL-Constraint學習筆記
前言 這篇文章主要是探討 PostgreSQL 的 Constraints 情境下的幾種 ACTION,以作為一個簡單的學習紀錄 何謂 Constraint? 眾所皆知,Foreign key(FK) 是 Table 中一個或一組用來關聯另一張表的 Primary key(PK) 的欄位,其中: 關聯另張表的表叫做 referencing table 或 child table 被關聯的表則稱為 referenced table 或 parent table 當 parent table 的某欄位和 child table 的某欄位有關聯時,例如: PK(Primary Key)和 FK(Foreign Key)的關係時,此時對 parent table 這個欄位做出修改(update)或刪除(delete)的操作,勢必會連帶影響到 child table。此時,child table 就需要明確的告訴 parent table,該筆操作對 child table的欄位要有什麼影響(ACTION)? 所以如何決定這些跨表參照欄位的存亡關係,就取決於 Constraint 的設定.換言之,SQL 透過 Constraint 的限制來協助我們維持父子表之間的參照完整性(referential integrity) 而 Constraint 又分為被更新(ON_UPDATE)以及被刪除(ON_DELETE)時,分別有對應的影響(ACTION)可以設定,實務上有 PK 和 FK 關係的欄位,大多會用 ON_DELETE居多. 在 PostgreSQL 中的語法結構大致如下(參考該網站): [CONSTRAINT fk_name] FOREIGN KEY(fk_columns) REFERENCES parent_table(parent_key_columns) [ON DELETE delete_action] [ON UPDATE update_action] ACTION 有哪些? 可設置的 delete_action 和 update_action 都稱為 ACTION,分為以下幾種:...