如何递增 id 字段的所有存储值
Posted
技术标签:
【中文标题】如何递增 id 字段的所有存储值【英文标题】:How do I increment all of the stored values of an id field 【发布时间】:2011-10-18 16:51:11 【问题描述】:我有一个名为blocks
的表,主键为blockid
。数据以 0 的 blockid
开始。现在,问题是,在另一个表中,blockid's
从 1 开始。所以,我需要让 blocks
中的所有 blockid's
递增1.
我该怎么做?
有没有一个方便的函数可以做到这一点,还是我们需要写一个?或者,我是否必须手动更改所有内容(这不会花费太长时间,但是有超过 100 行,所以,如果我不必这样做,我更喜欢它)。
感谢一切。
【问题讨论】:
这个问题有一些替代解决方案。见:***.com/questions/3439110/… 【参考方案1】:假设 blockid 不是您的 OP 的主键,一个快速而肮脏的方法可能是依次运行两个更新语句:
UPDATE blocks
SET blockid = blockid + 1001
UPDATE blocks
SET blockid = blockid - 1000
在第一次 UPDATE 中,您将所有 blockid 增加 1001。1000 只是一个任意大的数字,可以让您避免与其他 id 冲突(假设您有唯一性约束。)
在第二个语句中,您减 1000,使所有 id 加 1,同时避免冲突。
如果 1000 不是一个足够大的数字,您可以增加它并使其任意大。只需确保在第二次更新中匹配数字和数学即可。
【讨论】:
是的,效果很好,感谢您提供的简单的解决方案。以上是关于如何递增 id 字段的所有存储值的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 迁移 - 如何将 `id` 字段更改为主要字段并稍后自动递增