如何递增id字段的所有存储值

zer*_*rmy 3 sql postgresql

我有一个blocks用主键调用的表blockid.有数据开始blockid的0.现在的问题是,在另一个表中,blockid's从1开始所以,我需要得到所有的blockid'sblocks将递增1.
如何,我做到这一点?
有没有一个方便的功能来做到这一点,还是我们需要写一个?或者,我是否必须手动更改它(这不会花费太长时间,但有超过100行,所以,如果我不必这样做,我更喜欢它).

谢谢你的一切.

Pau*_*sik 9

假设blockid不是OP的主键,可以通过顺序运行两个更新语句来快速而肮脏:

UPDATE blocks
SET blockid = blockid + 1001

UPDATE blocks
SET blockid = blockid - 1000
Run Code Online (Sandbox Code Playgroud)

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

在第二个语句中,您递减1000,使所有ID增加1,同时避免冲突.

如果1000没有足够大的数字你可以增加它并使其任意大.只需确保匹配第二个更新中的数字和数学.