2013年3月3日日曜日

SQLiteでALTER RENAMEしたときのINDEX動作確認

先日「あにすと」のアプデして失敗したので、そのメモです。

■失敗内容

前回の記事で、DBのマイグレーションだーってことで、

SQLiteOpenHelper でテーブルカラム変更時にデータを引き継ぐ
http://www.ecoop.net/memo/archives/2011-01-28-1.html

を参考に元テーブル名を変更後、新規テーブルを作成してINSERTしなおすという対応したのですが。
実は、当該テーブルはKEYこそ変わらないものの、UNIQUE INDEXを設定していてその考慮が漏れてました。

簡単に絵にするとこんな感じ。

image

まぁ、マイグレーション自体もそうだし、実施後でも2重登録されない確認テストコード書いておけばよかったろって話に尽きます。
この状態でTABLE BにINSERTすると、ちゃんとUNIQUE INDEX効くのですよね。
いや、もちろんRENAME+新テーブル作成したら前のINDEXがそのまま利用できると思っていたわけじゃないですが。

■というわけで。。

今リリース中の「あにすと」でストリームログ→ストックログへコピーを繰り返すと、その回数分ツイートが増えていきます。
1800件あるストリームログだと2回で3600件になります。お得ですね。てへぺろ(・ω<)

■あと

動作確認のために簡単なプロジェクト作って登録しておきました。

Tips04 SQLiteでTABLE RENAME時のINDEXとON CONFLICTの動作確認
https://github.com/miquniqu/AndroidTips/tree/master/Tips04

device-2013-03-03-164933

参考までにどうぞ。

0 件のコメント:

コメントを投稿