2014-02-06 33 views
0

我正在用數據庫創建我的第一個網站。比方說,我有一個名爲「項目」的表。用戶可以發送要存儲在數據庫中的項目。但是,我不知道項目表應該使用哪種主鍵。併發用戶的表主鍵

我想過使用整數主鍵。每次用戶輸入一個項目時,我都會在表格中找到當前最大值,併爲新值增加1。然而,使用這種方法時,如果兩個用戶同時在表格中輸入項目,會發生什麼情況?這些項目可能最終使用相同的最大值,並最終導致相同的主鍵導致錯誤?

我想過的另一種方式是使用基於在user表中輸入的userID和日期的字符主鍵。所以我會創建「userID - entryDate」的主鍵。這種方式對我來說似乎非常「不潔淨」。

我在想,是否有一種標準的方式來處理可能讓多個用戶同時輸入信息的Web應用程序數據庫中的主鍵?

對不起,我對web開發和數據庫是全新的。有關信息,我使用Node.js作爲我的服務器,PostgreSQL作爲我的數據庫。

+0

對主鍵ID使用自動增量。 – wxyz

+0

只需google'數據庫SEQUENCE',它就會解釋如何設置唯一的ID生成。 –

回答

1

有數據類型SERIAL它會自動增加,通常用於主鍵。

SERIAL data type documentation

數據類型的串行和BIGSERIAL不是真正的類型,但僅僅是 標記方便了設置的唯一標識符列 (類似於通過一些其它 數據庫中支持的AUTO_INCREMENT屬性)。在當前實現中,指定

+0

啊我明白了!聽起來很完美,SERIAL在主鍵上使用auto_increment的優點是什麼? –

+0

它與指定序列並在列上使用它相同。請參閱文檔。 – Alex

+0

@BenCheng'auto_increment'是一個MySQL-ism。它在PostgreSQL中不存在。 'serial'只是一個自動遞增的整數列;這是說同樣的事情的另一種方式。 –