0

テーブルfooに新しい行を挿入する必要があります。ただし、これらのデータを挿入する前に、それぞれのユーザー名の行がすでに挿入されていることを確認する必要があります。すでに挿入されている場合は、現在のデータを新しいデータで更新する必要があります。

PHPif条件を使用してこれを行うことを知っています。しかし、MySQLの関数/ステートメントを1行だけ使用してこれを行うのが大好きです。誰か助けてもらえますか?

例として、次のステートメントを使用してください。更新する必要があります。

$in = "insert into foo(username, text) values('user-x', 'user-x-text')";
Mysql_query($in);

同様の質問を検索すると、次の投稿が表示されます:回答付きの同様の質問。しかし、私にはわからないので、そのソリューションを使用するのに苦労しました。そのコードスニペットによってプロセスが発生すると、速度などのサーバーリソースが低下します。このスクリプトはユーザーごとに約20回実行されるためです。

ありがとうございました。

4

1 に答える 1

1

私はINSERT ... ON DUPLICATE KEY UPDATE働くことができるはずだと思います

ユーザー名をUNIQUEインデックスにします。主キーである必要はありません

私が間違っていなければ、DUPLICATE KEYは、指定した列のいずれかで主キーまたは一意のインデックスのいずれかで衝突が発生した場合にのみ実行されます。あなたの場合、テキスト列はどちらでもないので、衝突では無視されます。

INSERT... ON DUPLICATE KEY UPDATEMySqlドキュメントで確認されているように一意のインデックスで動作します

于 2013-01-30T16:23:24.707 に答える