Postgresql
MATCH FULL、MATCH SIMPLE 和 MATCH PARTIAL 之間的區別?
我注意到一個
MATCH SIMPLE
andMATCH FULL
,但我不明白他們在做什麼。我看到預設是MATCH SIMPLE
; 但是,約束函式的其他MATCH
子句如何?FOREIGN KEY
共有三種匹配類型:
MATCH FULL
、MATCH PARTIAL
和MATCH SIMPLE
(預設)。MATCH FULL
除非所有外鍵列都為空,否則不允許多列外鍵的一列為空;如果它們都為空,則該行不需要在引用的表中具有匹配項。MATCH SIMPLE
允許任何外鍵列為空;如果其中任何一個為空,則該行不需要在引用的表中具有匹配項。MATCH PARTIAL
尚未實施。(當然,NOT NULL
可以將約束應用於引用列以防止出現這些情況。)此外,在外鍵一章中:
通常,如果引用行的任何引用列為空,則引用行不需要滿足外鍵約束。如果
MATCH FULL
添加到外鍵聲明中,則僅當引用行的所有引用列都為空時,引用行才會滿足約束(因此保證空值和非空值的混合會導致MATCH FULL
約束失敗)。如果您不希望引用行能夠避免滿足外鍵約束,請將引用列聲明為NOT NULL
.請務必查閱目前手冊或與您的安裝相匹配的版本。不要因為過時的 Google 連結而落入過時的版本。