下記のようにテーブルを2件作成(Djangoにより自動作成されたもの)し、自分で書いたSQLクエリによりusersテーブルにユーザーを1件挿入しました。
SQL
1/* Djangoにより作成されたものをコピペ */ 2CREATE TABLE "users" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "password" varchar(128) NOT NULL, "email" varchar(100) NOT NULL UNIQUE); 3 4CREATE TABLE "profile" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "nickname" varchar(32) NOT NULL, "family_name" varchar(32) NOT NULL, "given_name" varchar(32) NOT NULL, "gender" varchar(1) NOT NULL, "user_id" bigint NOT NULL UNIQUE REFERENCES "users" ("id") DEFERRABLE INITIALLY DEFERRED); 5 6/* 自分で発行 */ 7INSERT INTO `users` (email, password) VALUES ('john@lennon.com', ‘onoyoko');
次にprofile
テーブルに、上記で作成したユーザーに対応するレコードを挿入したかったのですが、どのようにすれば良いのか分かりません。
特に外部キーを指定しているprofile
.user_id
に対してどのようにすれば値を入れれるのかが分かりません。
INSERT INTO ~ SELECT ~ を使って、
SQL
1INSERT INTO profile(user_id) SELECT id FROM users WHERE email=‘john@lennon’;
ではprofile
.user_id
以外のカラムに情報を入れられないと思いますし。
例えば以下のようなレコードを登録するにはSQLクエリをどのように変更すれば良いのでしょうか?
SQL
1/* `profile`.`user_id`に`users`.`email`=‘john@lennon.com’に対応する`users`.`id`を入れたい */ 2INSERT INTO `profile` (user_id, nickname, family_name, given_name, gender) 3VALUES ('imagin', 'Lennon', 'John', ‘M’);
教えていただけたらありがたいです。
宜しくお願いします。
補足情報(FW/ツールのバージョンなど)
使用FW: Django
使用DB: SQLite3 / MySQL

回答1件
あなたの回答
tips
プレビュー