如何在psql中的范围内执行批量更新

时间:2016-01-04 10:20:35

标签: ruby-on-rails psql

这是我的表结构:

Table name:Items
--------------------------------
 id   | category_id |  code   |
--------------------------------
 1   | 1            |  15156  |
 2   | 1            |  15157  |
 2   | 1            |  15158  |
 2   | 1            |  15159  |
 2   | 1            |  15160  |
 2   | 1            |  15161  |

此处代码字段是唯一的,其类型为字符串。我需要将代码字段值增加+1(代码字段是字符串)。

2 个答案:

答案 0 :(得分:0)

你可以尝试

Item.update_all(code: "#{code.to_i + 1}")

如果您想阅读update_all

答案 1 :(得分:-1)

update_all无效,因为记录属性不可用。

更好的可能是......

minimum = "15157"
maximum = "15160"

Item.where("code >= ? AND code <= ?", minimum, maximum).each{|i| i.update_attribute(:code, "#{i.code.to_i + 1}") }

(编辑以反映传递给update_attribute的两个参数)

编辑反映@rustamagasanov建议限制给定范围的代码值......