nop*_*ole 3 mysql activerecord ruby-on-rails
我正在尝试一个实验性的Rails项目并销毁记录3(ID == 3),所以现在有记录1,2,4和5.
有没有办法重新填充此表,记录ID从1到5?(这是使用mysql)
我可以用
if Item.exists?(i)
item = Item.find(i)
else
item = Item.new
end
# set some values
item.name = "haha" + i
item.save
Run Code Online (Sandbox Code Playgroud)
Item.new() 是用新的自动增量记录ID创建新记录(在这种情况下为6),但是之前删除的记录是什么?
您可以使用以下方式设置ID:
item = Item.new
item.id = i
Run Code Online (Sandbox Code Playgroud)
你不能传递:id => i到Item.new因为id是一个特殊的属性,并自动从大量分配的保护.
您还可以告诉MySQL再次从1开始计数,这将自动填写所有缺少的ID:
Item.connection.execute("ALTER TABLE items AUTO_INCREMENT = 1")
Run Code Online (Sandbox Code Playgroud)
(实际上,MySQL文档说这将把它重置为MAX(id) + 1,所以在这种情况下它不会最终使用3.)
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |