并发用户的表主键

时间:2014-02-06 06:25:05

标签: sql node.js postgresql concurrency

我正在制作我的第一个带有数据库的网站。假设我有一个名为“items”的表。用户可以发送要存储在数据库中的项目。但是,我不知道items表应该使用什么类型的主键。

我考虑过使用整数主键。每次用户输入一个项目时,我会在表格中找到当前的最大值,并为新值增加1。但是,使用此方法,如果两个用户同时在表中输入项目会发生什么?这些项目可能最终使用相同的最大值并最终导致相同的主键导致错误吗?

我想到的另一种方法是根据在users表中输入的userID和日期使用字符主键。所以我将从“userID - entryDate”创建主键。这种方式对我来说似乎非常“不洁净”。

我想知道在Web应用程序的数据库中是否有一种标准的处理主键的方法,可能有多个用户同时输入信息?

对不起,我是网络开发人员和数据库的新手。有关信息,我使用Node.js作为我的服务器,PostgreSQL作为我的数据库。

1 个答案:

答案 0 :(得分:1)

数据类型SERIAL自动递增,通常用于主键。

SERIAL data type documentation

  

数据类型serial和bigserial不是真正的类型,而只是一个   用于设置唯一标识符列的符号方便性   (类似于其他一些人支持的AUTO_INCREMENT属性   数据库)。在当前实现中,指定