2013
06/13
Android SQLite 「ROWID」と「INTEGER PRIMARY KEY」と「INTEGER PRIMARY KEY AUTOINCREMENT」の関係
SQLiteには、自分が定義したカラムのほかに、ROWIDという一意な隠れカラムがある。
そいつはデータを追加するたび連番で振られるのだが、、
データを1個削除したのち、また追加したときの動きについて分からなかったので調べてみた。
で、問題です!じゃじゃん!
各問題のカラム定義で以下のデータが存在する場合、
次のデータ追加時に自動で割り当てられるROWIDは?
第1問 ROWID | NAME(TEXT)
正解は…3
第2問 ROWID | NUMBER(INTEGER PRIMARY KEY)
正解は…3
第3問 ROWID | NUMBER(INTEGER PRIMARY KEY AUTOINCREMENT)
正解は…5
つまり、ROWIDは「INTEGER PRIMARY KEY」なカラムと同じということ。
「INTEGER PRIMARY KEY」なカラムが「AUTOINCREMENT」なら、
ROWIDも「AUTOINCREMENT」。
一度使った値は使わない。
ちなみに明示的に「INTEGER PRIMARY KEY AUTOINCREMENT」な値(第3問のNUMBER)に
15とか今の最大値を超える値を入れると、
次に自動的に割り当てられる値は16になる。
また、明示的に3とかすでに削除した値を入れてもエラーにはならず、
次に自動的に割り当てられるのは、やっぱり最大値+1の値になる。
関連エントリ
Android SQLite テーブルをコマンドプロンプトで閲覧する方法
Android SQLite INTEGERの最大値
そいつはデータを追加するたび連番で振られるのだが、、
データを1個削除したのち、また追加したときの動きについて分からなかったので調べてみた。
で、問題です!じゃじゃん!
各問題のカラム定義で以下のデータが存在する場合、
次のデータ追加時に自動で割り当てられるROWIDは?
ROWID |
---|
1 |
2 |
4 |
第1問 ROWID | NAME(TEXT)
正解は…3
第2問 ROWID | NUMBER(INTEGER PRIMARY KEY)
正解は…3
第3問 ROWID | NUMBER(INTEGER PRIMARY KEY AUTOINCREMENT)
正解は…5
つまり、ROWIDは「INTEGER PRIMARY KEY」なカラムと同じということ。
「INTEGER PRIMARY KEY」なカラムが「AUTOINCREMENT」なら、
ROWIDも「AUTOINCREMENT」。
一度使った値は使わない。
ちなみに明示的に「INTEGER PRIMARY KEY AUTOINCREMENT」な値(第3問のNUMBER)に
15とか今の最大値を超える値を入れると、
次に自動的に割り当てられる値は16になる。
また、明示的に3とかすでに削除した値を入れてもエラーにはならず、
次に自動的に割り当てられるのは、やっぱり最大値+1の値になる。
関連エントリ
Android SQLite テーブルをコマンドプロンプトで閲覧する方法
Android SQLite INTEGERの最大値
スポンサーサイト
CM
TB
プロフィール
Author:nov
パセリはおやつです。
最新コメント
最新トラックバック
タグクラウドとサーチ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
