SQLiteの最近のブログ記事

Titanium.DatabaseはローカルなSQLiteを使ってデータを保管できる非常に簡単なAPIですが、SQLを直に書かないといけないのが些か面倒です。

かと言ってORM的な仕組みを構築するというのもオーバー過ぎる事が多いです。

保存するデータがHash形式のObjectに格納されているとしてCoffeeScriptであれば、こんな感じでUPDATE文を簡単に実装することができます。

例えばデータとして次の様なオブジェクトが存在した場合

まずは、SET句を作ります。

続いて仮パラメータにセットする値の配列を作ります。
UPDATE文なのでWHERE句にプライマリキー(id)を指定するため、最後にid項目も追加します。

あとは連結してUPDATE文に仕立て上げるだけです。

文字列連結だけで生成するよりも気持ちいいですね!

例えばこんなテーブルがあって、

updated_atを既存レコード分はregistered_atの値で追加したい時。

ALTER TABLEにそんな機能があるかなと探したがなさげ。

ここに素晴らしいアイディアが書いてありました。

Add not null DateTime column to SQLite without default value?

この回答では既存テーブルの最後にカラムを追加する形でINSERT INTOにはSELECT *を使ってますが、SELECT句をちゃんと指定すれば、どこだって構わない。

ALTER TABLE ADD COLUMNすると、.schema t_memberでDDLを表示したとき改行が入らずフォーマットが崩れるのだけど、CREATE TABLEし直すこの方法だとそっちも綺麗に表示されてナイス。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちSQLiteカテゴリに属しているものが含まれています。

前のカテゴリはServerです。

次のカテゴリはthinkingです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。