下記のようにテーブルを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
SQLite3 / MySQLとは結局どっちなんでしょう?
`テーブル名` は MySQL で、"テーブル名" はSQLite だよな〜
なんか適当に質問文作ってる?
ベンダー異なるSQL間で接続しなきゃいけないのかとも読み取れる?
ごめんなさい。実はDjangoが自動的に作成したテーブルに対して、ファイルに書き込んだSQL文を読み込ませてテスト用のユーザーを入れ込もうと思ったのです。スクリプトでも良かったのですが、SQL文を読み込ませた方が早いと思いまして。で、SQLite3、MySQL共にそのユーザーを入れようと思っていたのでこういう質問文になりました。
質問時はSQLiteでクエリが発行されていたようです。変更せずそのままCREATE文を書いてしまいました。
回答1件
あなたの回答
tips
プレビュー