![](/img/trans.png)
[英]PostgreSQL ON CONFLICT with multi-column unique constraint name
[英]Multi-Column Primary Key or Unique Constraint?
我有一個Country
表,其中包括ID
, Name
和Code
列。 所有這三列都應包含唯一值,並且不能為NULL
。
我的問題是,在ID
列上創建主鍵,在Name
和Code
列上創建唯一約束(我想在一個索引中)會更好,還是在其中包含Name
和Code
列會更好?具有ID
的主鍵? 又為什么呢? 具有多列主鍵是否會帶來潛在的負面影響或復雜性?
首先-是的,由三列組成的復合主鍵使其更討厭聯接到該表-想要聯接到Country
表的任何其他表也必須具有所有三列來建立聯接。
更重要的是-這是不一樣的限制!
如果你對PK ID
和兩個唯一約束Code
和Name
分開,那么這是無效的:
ID Code Name
--------------------------
41 CH Switzerland
341 CH Liechtenstein
555 LIE Liechtenstein
因為CH
的Code
和Liechtenstein
的Name
都出現了兩次。
但是,如果你對所有三列的單人PK在一起-那么這是有效的 ,因為每行有數據的不同的元組 - ( 41
, CH
, Switzerland
)是不一樣的( 341
, CH
, Liechtenstein
),因此,這些兩行是允許的。
如果將PK一次放在所有三列上,則唯一性只會擴展到整個元組 (所有三列)-每列分別可以具有 “重復項”。
所以它可以歸結為
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.