1

時々更新されるテーブルがあります。ID 列は「auto_increment」です。リクエストごとに、最大の ID 番号を知りたいです。

最新の ID を保存する最良の方法は何ですか? すべてのスクリプト実行に沿ってグローバル変数を定義することは可能ですか?

4

3 に答える 3

2
SELECT max(id) FROM `table` WHERE 1

この値は最後に追加された行を表すため、必ずこの値に 1 を追加してください。

新しく編集された質問への回答:

最新の ID を保存する最善の方法は、何もしないことです。挿入の一部として id フィールドを含めないでください。mysql はそれを正しく処理します。行が作成され、次の自動インクリメントされた int が与えられます。入力した内容を知りたい場合は、mysqli_insert_idを実行して、データベースへの最新の挿入の ID を取得できます。(これはphpを使用したmysqliドライバーを前提としています。言語について言及していないため、他の言語/ドライバーが同様の機能をサポートしていると推測しました)。それはあなたの質問に答えていますか?

于 2013-06-24T22:23:24.967 に答える
1

効率的なアクセスのためにメモリにデータを保存したい場合は、memcached を MemCache または MemCached PHP 拡張機能とともに使用できます。

$memcache = new Memcache;
$memcache->connect('localhost', 11211);

$memcache->set('last_id', $last_id); // Store the id in memory with no expiration

最後のIDが変更されるたびに、もう一度設定してください。メモリから ID を取得するには、次のようにします。

$memcache->get('last_id');

$memcache->get が false を返す場合、何らかの理由でキャッシュが失われているため、データベースから last_id を再度取得して設定する必要があります。

(効率上の理由から) Memcache を使用するたびに新しい Memcache 接続をインスタンス化したくないので、何らかのシングルトン パターンを使用するか、より好ましくは依存性注入を使用することに注意してください。

于 2013-06-24T23:36:59.537 に答える
0
SHOW TABLE STATUS LIKE 'table'

挿入の前に読んでいる場合は、Auto_increment 列を読み取ります。

またはmysqli_insert_id挿入後に読み取る場合

于 2013-06-24T22:26:59.393 に答える