【问题标题】:What happens when you insert rows in a SERIAL column with existing values?当您在具有现有值的 SERIAL 列中插入行时会发生什么?
【发布时间】:2018-04-19 05:53:08
【问题描述】:

我必须将一个大型 CSV 文件导入数据库,其中一列必须是购买的唯一 ID。我将列的类型设置为SERIAL(是的,我知道它实际上不是一个类型)但是因为我已经有一些数据和他们自己的“随机”购买 ID,所以我不确定当我插入新行。

购买 ID 是否会采用尚未使用的值?它会在最大的现有 ID 之后开始吗?它会从 1 开始而不关心某个值是否已在使用中吗?

【问题讨论】:

    标签: sql database postgresql


    【解决方案1】:

    底层SEQUENCE 不会关心你插入的值(显式为serial 列提供值,推翻默认值),你必须手动调整以避免重复键错误:

    SELECT setval(pg_get_serial_sequence('tbl', 'id'), max(id)) FROM tbl;
    

    'tbl''id' 分别是表名和列名。
    相关:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多