私は2つのテーブルuser
とuserprofile
をMySQL
に入れています。私はこれらのテーブルへのデータの挿入を処理する私のWebサーバ上のPHPスクリプトを持っています。他のテーブルの外部キーによって参照される主キーを取得するにはどうすればよいですか?
ここには、テーブルを定義するために使用されるSQLコマンドがあります。
CREATE TABLE user (
USER_ID INT NOT NULL AUTO_INCREMENT,
USERNAME VARCHAR(20),
USER_PASSWORD VARCHAR(255),
PRIMARY KEY (USER_ID)
);
CREATE TABLE userprofile (
USER_ID INT NOT NULL,
FULL_NAME VARCHAR(255),
AGE INT,
FOREIGN KEY (USER_ID) REFERENCES user (USER_ID)
);
私は正常に私が定義したPHP
関数の内部で実行され、次のコマンドSQL
"INSERT INTO user (USERNAME, USER_PASSWORD) VALUES ('$username', '$hashedPassword')"
とuser
テーブル用PHP
を使用してデータベーステーブルに書き込むことができています。
私が今経験している問題は、ユーザーのFULL_NAME
とAGE
などの情報を追加する必要があるとします。私は後でこの情報をユーザーに含めることを許可しているので(ユーザーのプライバシーのためにオプションです)。 USER_ID
を持たないデータベーステーブルuserprofile
をどのくらい正確に入力しますか?
データベーステーブルを作成するためのドキュメントを見てきましたが、私の定義が正しいと思います。私の最初の考えは、データベースから現在のユーザーのUSER_ID
を取得し、そのデータをuserprofile
テーブルに挿入するための関数を実装することでした。上記のSQL
コマンドを使用してユーザーを追加した後に、予想外の動作があった場合、userprofile
には、外部キーUSER_ID
によってリンクされているため、行が作成されます。私は本当にこれらの2つのテーブルが互いに同期していることを保証する方法はわかりません。
私は自分のプロフィールを更新したいときは 'User_id'のレコードが存在しない場合にのみ' profile'テーブルに挿入するべきだと思います!そうでなければ、既存のものを更新する必要があります。この投稿は参考になるかもしれません:http://stackoverflow.com/questions/3164505/mysql-insert-record-if-not-exists-in-table –
@AhmadMobarakiそれは私が見落としてきた非常に良い点です。私はこれを念頭に置いておきます。 – AvP