我必须将一个大型 CSV 文件导入数据库,并且其中一列必须是购买的唯一 ID。我将列的类型设置为
SERIAL
(是的,我知道它实际上不是一种类型),但由于我已经有一些带有自己的“随机”购买 ID 的数据,所以我不确定当我插入新行。
购买 ID 是否会采用尚未使用的值?会在现有的最大 ID 之后开始吗?它会从 1 开始而不关心某个值是否已被使用吗?
底层
SEQUENCE
不知道手动插入的值(覆盖默认值)。如果其中任何一个等于或大于下一个序列值,则必须手动设置序列以避免重复值 - 如果列定义为唯一,则会出现重复键错误:
SELECT setval(pg_get_serial_sequence('tbl', 'id'), max(id)) FROM tbl;
tbl
和 id
分别是表和列的名称。