在本文中,我们介绍了什么是主键、主键的规则以及如何在 PostgreSQL 中使用主键。
在关系数据库中,主键是能够唯一标识表中的每一行的一个列或者多个列的组合。
主键是定义在表上的。一个表不强制定义主键,但最多只能定义一个主键。
主键可以包含一个列或者多个列。
主键列的值必须是唯一的。如果主键包含多个列,则这些列的值组合起来必须是唯一的。
主键列中不能包含 NULL 值。
如果不遵循上面的规则,则可能会引发以下的错误。
上面这种方式适合只有一列作为主键的情况,如果主键包含多列,请使用下面的方式:
如果我们创建表的时候没有设置主键,而我们想为其添加一个主键,请使用下面的方式:
这里为 users 表添加了主键,该主键包括 id 列。
如果我们想删除一个表上主键,请执行以下的步骤:
你可以在最后一行发现主键约束的名称是 users_pkey。
通常在业务系统中,我们不使用业务列作为主键,虽然它们也是唯一的。我们一般使用单独的列作为主键,这主要是出于以下两方面的原因:
为了生成唯一的主键值,我们通常采用以下方法:
将主键列设置为 SERIAL。
声明为 SERIAL 的列会自动生成连续的整数值。以下语句使用 SERIAL 创建一个主键列。
这里,将主键列设置的数据类型设置为 UUID,并为它自定默认值 gen_random_uuid()。
主键和唯一索引都要求值是唯一的,但它们之间存在一些不同:
一个表中只能定义一个主键,但是能定义多个唯一索引。
主键中的值不能为 NULL,而索引中的值可以为 NULL。
在本文中,我们学习了什么是主键、主键的规则以及如何在 PostgreSQL 中使用主键。一个表最多只能定义一个主键。
