4 Answers 1 Followers -
_dozen_ DOZEN@バリオン
usersに0,dozen,hogehoge,1というデータが入っていたとして、chatに0,2011-08-13 06:00:00,dozen,テスト(^ω^)をINSERTしたい時、nameの部分をどうするかがわからないです。chat.nameはusers.user_idの外部キーですが、予めクエリを発行する側で、名前をユーザIDに変更して入れてやらなければならないんでしょうか?それとも、users.nameと照合(?)してuser_idをchat.nameにINSERTするみたいなクエリが書けますか?
すみません、意味不明かもしれないです><;
morinatsu morinatsu
必要な前提(実現したい要件)を書かれていないので、推測混じりの回答です。
チャットシステムであれば、ユーザーのログイン時にusers表を元にした認証を行っているでしょうから、SQLを発行するまでもなくuser_idもnameも既に取得済みで、それをINSERT時にそのまま使えば良いと思いますがいかがでしょうか。
(ユーザーが発言する一方で、同時に管理者が勝手に名前を変えることも可能ではあります。その不整合が気になるということでしたら、トランザクションや行ロックを検討する必要があります)
あと、これは自分の感じた疑問ですが、chat.nameに名前を入れるのではusers.user_idと突き合わせるのはムリではないでしょうか。余計なお世話かも知れませんが、表を設計した方の意図を確認した方がいいと思います。
yaotti やおっち/Hiroshige Umino
chat.nameを使ってusersとの関係を保存するのではなく,chat.nameの代わりにchat.user_idというフィールドを用意してそれにuser.user_idを保存するのが良いと思います.
またユーザー情報はmorinatsuさんの書かれているように取ってきているはずなので,その中からuser_idを取り出してINSERT文を作れます.
書かれている例で言うと,
1 INSERT INTO chat (id, time, user_id, speak)のようにchatのレコード作成時にuser_idを入れて,誰の発言かを保存するといいんじゃないでしょうか.
2 VALUES (0, '2011-08-13 06:00:00', 0, 'テスト(^ω^)');
Mac OS X LionでDBD::mysqlのビルドに失敗するので、解決方法があるのならご...
2 Answers 1 Followers
MySQLを複数バージョン稼働させることができて、OSが起動すると指定したMySQLのバージョ...
0 Answers 1 Followers
MySQLで画像データを格納するのにLONGBLOB型のフィールドを2つ用意したがperlでC...
0 Answers 1 Followers
1 人がこの質問をフォローしています。