fc2ブログ

2013
06/13

Android SQLite 「ROWID」と「INTEGER PRIMARY KEY」と「INTEGER PRIMARY KEY AUTOINCREMENT」の関係

Android

SQLiteには、自分が定義したカラムのほかに、ROWIDという一意な隠れカラムがある。
そいつはデータを追加するたび連番で振られるのだが、、

データを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

NAME
TITLE
MAIL
URL
PASS (削除時に必要)
SECRET 管理者にだけ表示を許可する
COMMENT&
DECORATION

TB

トラックバック

http://novdev.blog.fc2.com/tb.php/7-fc3dedc0

この記事にトラックバックする(FC2ブログユーザー)

プロフィール

nov

Author:nov
パセリはおやつです。

最新コメント

最新トラックバック

タグクラウドとサーチ

> tags

検索フォーム

ブロとも申請フォーム

QRコード
QR