実現したいこと
sqlite3.exe
1CREATE TABLE "user" ( 2 "user_id" INTEGER, 3 "user_name" TEXT, 4 "prefecture_id" INTEGER, 5 PRIMARY KEY("user_id" AUTOINCREMENT) 6); 7 8CREATE TABLE "prefecture" ( 9 "prefecture_id" INTEGER, 10 "prefecture" TEXT UNIQUE, 11 PRIMARY KEY("prefecture_id" AUTOINCREMENT) 12);
このような2つのテーブルがあるとします。
この時
user_name='山田'
prefecture='東京都'
というデータを挿入したいです。
(追加するデータの形式はPowerShellのハッシュテーブルを想定しています)
試したこと
sqlite3.exe
1INSERT OR IGNORE INTO prefecture (prefecture) VALUES('東京都'); 2 3INSERT INTO user (user_name,prefecture_id) 4VALUES ('山田',(SELECT prefecture_id 5FROM prefecture 6WHERE prefecture = '東京都'));
このようにしてまずprefectureテーブルに都道府県のデータがなければ追加して
その後prefecture_idを取得してそれをuserテーブルに書き込む、
これで目的の操作はできるのですが
これだとテーブルが分けられているデータの数だけ1つめのINSERTを実行しないといけませんし
2つめのINSERTもその分だけ複雑化してしまいます。
第一正規形のテーブルであれば
INSERT INTO user (user_name,prefecture)
VALUES ('山田','東京都');
これで簡単にデータが追加できますが
これぐらい簡単な方法で正規化されたDBにデータを追加する方法はありませんか?
補足情報(FW/ツールのバージョンなど)
Windows 10 64bit
sqlite3.exe version 3.41.1
PowerShell 7.3.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。