【问题标题】:Postgres column to have Autoincrement feature based on values on another key columnPostgres 列具有基于另一个键列上的值的自动增量功能
【发布时间】:2021-03-07 16:40:46
【问题描述】:

我有一个要求,我需要在 postgres 中设计表格,其中一列需要具有自动增量功能。但是自动增量应该基于另一列的值。 表格

Column A   Column B
100           1
101           1
102           1
102           2
102           3

A 列和 B 列是表的键。现在,如果我插入另一行,A 列等于 100,则 B 列需要自动填充为 2。如果我尝试将值 102 插入 A 列,则 B 列需要自行填充为 4。 有没有办法在创建表期间为 B 列设置属性?

谢谢 萨迪克

【问题讨论】:

  • 没有。这里的用例是什么?
  • 实际表格有 3 列。 A 列和 C 列将始终是唯一的。列 A 具有引用 Id,列 C 将具有与其关联的字符串。用户必须经常更新与 id(A 列)关联的字符串。当他们这样做时,必须在表中创建新行,并增加序列号。我可以使用相同 id 的最大序列号(A 列中的值)来做同样的事情,但想探索是否有任何列设置可以完成此操作
  • insert_timestamp 字段与DEFAULT now() 一起使用不是更容易吗?然后你就会有插入的顺序。

标签: postgresql auto-increment


【解决方案1】:

@AdrianKlaver 是正确的。您应该使用时间戳并实际记录版本的保存时间。如果需要版本号,可以在查询时使用Window row_number函数生成。

select column_a 
     , row_number() over (partition by column_a
                              order by column_a,column_a_ver_ts) column_b
  from table_name; 

您也可以使用上述查询并创建一个视图。见Fiddle

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 2022-01-23
    • 2019-05-20
    • 2021-02-14
    • 2018-01-16
    • 2014-08-11
    • 2019-05-30
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多