【问题标题】:How do I increment all of the stored values of an id field如何递增 id 字段的所有存储值
【发布时间】:2011-10-18 16:51:11
【问题描述】:

我有一个名为blocks 的表,主键为blockid。数据以 0 的 blockid 开始。现在,问题是,在另一个表中,blockid's 从 1 开始。所以,我需要让 blocks 中的所有 blockid's 递增1.
我该怎么做?
有没有一个方便的函数可以做到这一点,还是我们需要写一个?或者,我是否必须手动更改所有内容(这不会花费太长时间,但是有超过 100 行,所以,如果我不必这样做,我更喜欢它)。

感谢一切。

【问题讨论】:

标签: sql postgresql


【解决方案1】:

假设 blockid 不是您的 OP 的主键,一个快速而肮脏的方法可能是依次运行两个更新语句:

UPDATE blocks
SET blockid = blockid + 1001

UPDATE blocks
SET blockid = blockid - 1000

在第一次 UPDATE 中,您将所有 blockid 增加 1001。1000 只是一个任意大的数字,可以让您避免与其他 id 冲突(假设您有唯一性约束。)

在第二个语句中,您减 1000,使所有 id 加 1,同时避免冲突。

如果 1000 不是一个足够大的数字,您可以增加它并使其任意大。只需确保在第二次更新中匹配数字和数学即可。

【讨论】:

  • 是的,效果很好,感谢您提供的简单的解决方案。
猜你喜欢
  • 2014-06-21
  • 2011-07-16
  • 2017-01-10
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
相关资源
最近更新 更多