私は 'picks'というテーブルを持っています。ユーザーがログインして選択を開始すると、最初にそのユーザーの「選択」テーブルに64行が挿入されます(ユーザーIDは列) 。行はphpのループを使って挿入されるので、PDOプリペアドステートメントを使って64個の挿入があります。これは、ユーザーごとに1回だけ行う必要があります。 これらの行は、そのユーザーに対して連続する必要があります。何人かの他のユーザーがまったく同じことを同じ時間にやっていたら?行が連続して挿入されない可能性はありますか?テーブルロックを使用する必要がありますか?私は以前はそれらを使ったことがありません。 MySqlバージョン:5.0.92-rs-log MyISAM ありがとうMysqlユーザーごとに連続した行を挿入
0
A
答えて
0
実際には必要ない問題に対してはテーブルロックを使用しません。行を連続させる必要はありません。オートインクリメンタルIDに基づいてそれらを注文しているのでしょうか?そうであれば、連続していないかもしれないが、順番になるだろう。さらに、これらの行に特定の順序が必要な場合は、常に実際の順序を設定する別の列を追加できます。
とにかく質問を拡大して、より適切なヘルプを得るようにしてください。
0
まず、1人のユーザーが連続するIDに頼るのではなく、これを解決するより良い方法があるはずです。
実際に並行性の問題が発生する可能性があります。 Oracleのような他のDBMSでは、auto_incrementの代わりにシーケンスがあり、このタイプのものに適しています。あなたは1行だけの補助テーブルを持ってこれをエミュレートすることができます。この場合、ID(または何でも)フィールドはauto_incrementに設定されず、最後のIDを保存するテーブルはsequence
(たとえば)となります。次に、64の新しいレコードを挿入する前に、最後のIDを取得して更新するためにそのテーブルをクエリします。私は好奇心が強い
// Get the last ID
$last_id = query('SELECT last_id FROM sequence LIMIT 1');
// Store the last ID in your code and then update the new value
$new_id = $last_id + 64;
query('UPDATE sequence SET last_id = :new_id', array('new_id' => $new_id));
// Make sure your DB class is set on auto_commit or commit the transaction here
// Insert your new records
for ($i = ++$last_id; $i < $new_id; $i++) {
query('INSERT INTO picks (id, user_id) VALUES (:id, :user_id)', array('id' => $i, 'user_id' => $user_id));
}
関連する問題
- 1. ユーザーごとに行を挿入する
- 2. MySQLに連続番号を挿入
- 3. 挿入ごとにコミットを続ける
- 4. MySQLに連続番号を挿入する際のエラー
- 5. データベースの2行ごとに改行を挿入します。
- 6. シェルはn行ごとに行を挿入します
- 7. 失われた番号ごとに行を挿入する
- 8. データベースに連続したデータフローを挿入する
- 9. MySQLの複数行の挿入は連続した自動インクリメントIDを取得しますか?
- 10. MYSQL - 最後に挿入連結した文字列
- 11. 2秒ごとにmysqlデータベースに自動挿入
- 12. なぜspring jdbcTemplate batchUpdate行ごとに行を挿入する
- 13. グループごとに連続した重複値をカウントする
- 14. パラメータとmysqlを挿入したPHP Exec
- 15. Excel:パターンごとにコンテンツを含むx行ごとに改行を挿入します。
- 16. sqliteの連続した挿入文の実行が約200で終了する
- 17. Cassandraの連続測定挿入速度
- 18. linuxの3つの連続する行ごとにループする
- 19. Pythonでpandasを使用して連結した後にデータフレームごとにヘッダータイトルを挿入する方法
- 20. 多行挿入とMySQLの主キー
- 21. バッチ:datファイルからdatファイルに行ごとに挿入
- 22. 連続した行の値を計算するために関数に式を挿入する方法
- 23. 255行を挿入した後にMySQLが停止する
- 24. チェックボックスのみ選択した行の値をMySQLテーブルに挿入
- 25. MySQLのストアドプロシージャと最後に挿入された行
- 26. mysqlのバッチ挿入:取得私は、mysqlのテーブルに一括挿入を行うためにJavaを使用している挿入行
- 27. Androidは、挿入クエリごとに複数の行を持つファイルからDbにデータを挿入します
- 28. 複数の行をmysql DBに挿入
- 29. バインドごとにWPF「挿入」コントロール
- 30. ユーザーのIPアドレスをMYSQLトリガーに挿入します
...なぜレコードが連続している必要がありますか:この(それは単にコードを分かりやすくするためですが、PHPの機能に注意を払っていない)のような
何か? –
何らかの理由で、連続している必要があるようです。私がこのアプリを書いたとき、私は急いで、おそらくいくつかの悪いコードを書きました。私は、理由を知るために後でいくつかのcadeを書き直さなければならないでしょう。 – EricP
これらの行を取得するためにsqlを送信すると、お手伝いできる場合があります。 –