SQLでのROWID値
auです。
今回は、ROWID値について調べてみました。
CREATE TABLE user(id integer, name text);
userテーブルに、idとnameのカラム値を指定したものを作りました。
INSERT INTO user VALUES(1, "Sato"); INSERT INTO user VALUES(4, "Suzuki"); INSERT INTO user VALUES(8, "Takahashi");
そのテーブルに、3つのデータを追加しました。
SELECT * FROM user; 1|Sato 4|Suzuki 8|Takahashi
普通にテーブル内を見ようとすると、こうでます。
ここに、ROWIDを追加してみてみます。やり方は以下の通りです。
SELECT *. ROWID FROM テーブル名;
実際のテーブルでやってみます。
SELECT *, ROWID FROM user; 1|Sato|1 4|Suzuki|2 8|Takahashi|3
nameの右に、1、2、3と順番に番号が振られているのがわかります。
SELECT *, ROWID FROM user WHERE ROWID = 2; 4|Suzuki|2
このように書くと、指定したROWIDの番号のデータだけ抜き出すことができます。
ROWID値を指定することもできます。
INSERT INTO user(id, name, ROWID) VALUES(11, "Kato", 9); SELECT *, ROWID FROM user; 1|Sato|1 4|Suzuki|2 8|Takahashi|3 11|Kato|9
割り込んで挿入することができました。
INSERT INTO user(id, name, ROWID) VALUES(3, "Tanaka", 2); Error: UNIQUE constraint failed: user.rowid
重複した数値を入れることはできませんでした。プライマリーキーと同じようなエラー文がでました。
INSERT INTO user VALUES(3, "Tanaka"); SELECT *, ROWID FROM user; 1|Sato|1 4|Suzuki|2 8|Takahashi|3 11|Kato|9 3|Tanaka|10
新しいデータをいれて、見てみたら9の次に追加されていました。このことから、ROWID値を4と指定しないと11, 12, 13...となっていくことがわかりました。