2011-12-11 50 views
1

我使用的DataMapper存儲大量引入nokogiri刮數據的行在清除所有行時重置數據庫密鑰的方法是什麼?

這組數據總是每週更換的,偶爾我想給用戶「清除職位」,使他們能夠重新的能力 - 獲取新數據。

裏面的後「/清洗」的方法做(屈)我有以下

Post.all.destroy 

的問題是它的葉子在自動遞增的量的關鍵。雖然這組數據與其他表相關聯,但其他數據也將被清除,所以我知道這些鍵不會有匹配問題。儘管每次清洗,我的鑰匙在一段時間後都會變得很大(40,000)。

我不使用的原因DataMapper.auto_migrage!是因爲有一個特定的表(沒有關聯),我不想觸摸(設置表)。

PS。即使我使用datamapper,我也標記了activerecord,因爲我假設這個過程非常相似,只是在語法上有所不同。

回答

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); 
+1

其實很簡單:'TRUNCATE table_name'將兩者明確取出所有行並將計數器重置爲零(與刪除所有行相比非常快)。 – d11wtq

相關問題