SQLite UUID 生成方法 | サンプルコード付き
uuid モジュールを使う
SQLiteにはuuid
モジュールが標準で組み込まれており、これを使って簡単にUUIDを生成できます。
SELECT uuid();
このクエリを実行すると、ランダムなUUIDが生成されます。
RANDOMBLOB
関数を使って、16バイトのランダムなバイナリ列を生成し、それをUUIDとして使うこともできます。
SELECT HEX(RANDOMBLOB(16));
外部ライブラリを使う
SQLiteにはUUID生成機能が標準で組み込まれていますが、より高度な機能が必要な場合は外部ライブラリを使うこともできます。
SELECT uuid_generate_v4();
UUIDを使うメリットは以下の通りです。
- ユニークな識別子を生成できる
- 人間が読みやすい形式で表現できる
- データベース間の互換性が高い
- 整数型主键に比べてデータサイズが大きい
- ソートや検索に時間がかかる場合がある
SQLiteでUUIDを使うにはいくつか方法があります。それぞれの特徴を理解して、用途に合った方法を選びましょう。
uuid モジュールを使う
-- テーブル作成
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
uuid TEXT UNIQUE NOT NULL
);
-- UUIDを生成して挿入
INSERT INTO users (uuid) VALUES (uuid());
-- UUIDで検索
SELECT * FROM users WHERE uuid = 'YOUR_UUID';
RANDOMBLOB 関数を使う
-- テーブル作成
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
uuid TEXT UNIQUE NOT NULL
);
-- ランダムなバイナリ列を生成して挿入
INSERT INTO users (uuid) VALUES (HEX(RANDOMBLOB(16)));
-- UUIDで検索
SELECT * FROM users WHERE uuid = 'YOUR_UUID';
外部ライブラリを使う
-- ライブラリのインストール
PRAGMA foreign_keys = ON;
-- テーブル作成
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
uuid TEXT UNIQUE NOT NULL
);
-- ライブラリをロード
LOAD EXTENSION 'uuid_oss';
-- UUIDを生成して挿入
INSERT INTO users (uuid) VALUES (uuid_generate_v4());
-- UUIDで検索
SELECT * FROM users WHERE uuid = 'YOUR_UUID';
SQLiteでUUIDを生成するその他の方法
SELECT REPLACE(
SUBSTR(
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
RANDOM() * 36 + 1,
36
),
'.{8}-.{4}-.{4}-.{4}-.{12}',
'-'
);
トリガーを使って、レコード挿入時に自動的にUUIDを生成することもできます。
CREATE TRIGGER uuid_trigger
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
NEW.uuid = uuid();
END;
このトリガーを登録しておくと、users
テーブルにレコードを挿入するたびに、自動的にUUIDが生成されます。
CREATE VIEW users_with_uuid AS
SELECT
id,
uuid() AS uuid
FROM users;
このビューを作成しておくと、users_with_uuid
ビューからデータを取得すると、自動的にUUID列が表示されます。
sqlite uuid