Postgresql

一個表中一組行的唯一 ID

  • January 9, 2018

我知道標題有點奇怪,但我真正想做的很簡單。在我的 Postgres 數據庫中,使用者創建個人資料並上傳圖像。

user_id: 1, photo_id: 1 

現在,第二個使用者創建了個人資料並上傳了兩張圖片。

user_id: 2, photo_id: 1, photo_id: 2

在我的照片表中,如何從 user_id 和 photo_id 的組合中創建唯一標識符?兩者在表中都不是唯一的,但它們的組合應該是唯一的。

**首先,photo_id在桌子上應該是獨一無二的。**但是,忽略聲音練習,您仍然可以使用複合材料來做到這一點PRIMARY KEY

CREATE TABLE photos (
 user_id  int,
 photo_id int,
 PRIMARY KEY (user_id, photo_id)
);

INSERT INTO photos (user_id,photo_id) VALUES (1,1),(1,2);

--duplicate already exists
INSERT INTO photos (user_id,photo_id) VALUES (1,1);

複合自然主鍵還不錯,但是我不喜歡將它們放在多個代理鍵上。如果你要創建一個 ID,不妨讓它獨一無二。

引用自:https://dba.stackexchange.com/questions/195011