SQLのautoincrement機能

【概要】SQLiteにおけるautoincrement属性の実践的な使用方法を解説する。既存データに一意の識別子を追加する手順を、具体例とともに段階的に説明する。

【目次】

  1. 前準備
  2. autoincrementの実践的な使用方法

前準備

SQLite 3の詳細については、別ページ »にまとめている。

autoincrementの実践的な使用方法

autoincrementとは、レコード作成時に値が指定されない場合、自動的に1ずつ増加する値を設定する属性である。

  1. データの構造と概要
    データセットの構造を示す図

    このデータセットに対して、一意の識別子としてid属性を追加したテーブルを作成する。

  2. SQLite 3の起動方法

    この例では、インメモリデータベースを使用するため、データベース名を指定せずに起動する。

    sqlite3
  3. 基本データの作成

    演習目的で、まず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;
    テーブルS作成のSQL実行結果
  4. データ内容の確認
    select * from S;
    テーブルSの全レコード表示結果
  5. 新テーブルの定義

    テーブル定義: 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作成とデータ移行のSQL実行結果
  6. テーブルTの確認
    select * from T;
    テーブルTの全レコード表示結果、id列が自動採番されている