SQLのautoincrement機能
【概要】
SQLite 3におけるautoincrement属性の使い方を解説する。既存データに一意の識別子(id)を追加する手順を、具体例とともに段階的に説明する。
【目次】
【サイト内の関連ページ】
【サイト内の関連ページ】
1. 前準備
SQLite 3の詳細については、別ページ »にまとめている。
2. autoincrementの使い方
autoincrement(自動採番)とは、レコード作成時に値が指定されない場合、自動的に1ずつ増加する値を設定する属性である。SQLite 3では、INTEGER PRIMARY KEYの列に付けることで機能する。
- データの構造と概要
このデータセットに対して、一意の識別子としてid属性を追加したテーブルを作成する。
- SQLite 3の起動
この例では、インメモリデータベース(メモリ上だけに作られ、終了時に消える一時的なデータベース)を使用するため、データベース名を指定せずに起動する。
sqlite3 - 基本データの作成
演習のため、まずidを含まないテーブルSを作成する。
テーブル定義: S(a1, a2, a3)
create table S ( a1 integer, a2 integer, a3 integer); begin transaction; insert into S(a1, a2, a3) values (1, 2, 3); insert into S(a1, a2, a3) values (1, 1, 2); insert into S(a1, a2, a3) values (2, 1, 1); insert into S(a1, a2, a3) values (3, 3, 1); commit;
- データ内容の確認
select * from S;
- 新テーブルの定義
テーブル定義: T(id, a1, a2, a3)
テーブルTのid列にautoincrement属性を設定する。その後、テーブルSのデータをテーブルTに移す。
create table T ( id integer primary key autoincrement not null, a1 integer, a2 integer, a3 integer); begin transaction; insert into T(a1, a2, a3) select a1, a2, a3 from S; commit;
- テーブルTの確認
select * from T;