清除所有行时,重置数据库密钥的方法是什么?

时间:2011-12-11 04:58:43

标签: ruby activerecord datamapper

我正在使用datamapper将大量nokogiri-scraped数据存储到行

这组数据每周都在变化,有时我想让用户“清除帖子”,以便他们重新获取新数据。

发布'/ purge'的方法里面做(sinatra)我有以下

Post.all.destroy

问题是它将密钥保留为自动递增的数量。虽然这组数据与其他表相关联,但其他数据也被清除,所以我知道密钥没有问题匹配。每次清洗,我的钥匙在一段时间后会变得很大(40,000)。

我不使用 DataMapper.auto_migrage!的原因是因为有一个我不想触摸的特定表(没有关联)(设置表)。

PS。我标记了activerecord,即使我正在使用datamapper,因为我假设这个过程非常相似,只是语法不同。

1 个答案:

答案 0 :(得分:2)

AUTO INCREMENT值的责任属于数据库引擎,而不属于ORM。因此,如果要重置其值,则必须发出如下查询:

ALTER TABLE theTableInQuestion AUTO_INCREMENT=desired_value

可能你会有类似的东西:

adapter = DataMapper.repository(:default).adapter
adapter.execute('ALTER TABLE theTableInQuestion AUTO_INCREMENT= ? ', desired_value);