テーブルの自動インクリメント列として id を設定しており、列 id にあるデータを列 user_id にコピーしようとしています。
以下のクエリはデータを挿入し、列 id を自動インクリメントしますが、列 user_id に id と同じ値を持たせたいので、id が 31 に自動インクリメントされる場合、user_id も 31 になります。
ここに私が使用しているクエリがあります:
$query="INSERT INTO ptb_users (user_id,
id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."'
)";
$result = mysql_query("UPDATE ptb_users SET user_id=id");
mysql_query($query) or die();
私が抱えている問題は、id と user_id の間の更新/コピーが、別のユーザーが登録した後、またはクエリが 2 回目に実行された後に、この現在の登録に対してのみ発生することです。
したがって、id 31 を列 user_id にコピーする必要があるとします。これは、別のユーザーがサインアップしてクエリを 2 回目に実行するまで発生しません。新規登録者が id 32 の場合、id 32 が 2 回目のクエリの登録/実行を行うまで、前のユーザー (id 31) の id と user_id の間の更新は行われません。
id 31 がクエリを登録/実行すると、id と user_id の間の更新がクエリの実行と同時に行われるように、クエリで、またはクエリが終了したらすぐに更新を行うにはどうすればよいですか?
実際には、自動インクリメントとして id と user_id を使用したいのですが、2 つの自動インクリメント フィールドを使用することはできないため、自動インクリメントの結果を id から user_id に複製しようとしています。セキュリティのために 2 つの列を相互参照します。