時々更新されるテーブルがあります。ID 列は「auto_increment」です。リクエストごとに、最大の ID 番号を知りたいです。
最新の ID を保存する最良の方法は何ですか? すべてのスクリプト実行に沿ってグローバル変数を定義することは可能ですか?
SELECT max(id) FROM `table` WHERE 1
この値は最後に追加された行を表すため、必ずこの値に 1 を追加してください。
新しく編集された質問への回答:
最新の ID を保存する最善の方法は、何もしないことです。挿入の一部として id フィールドを含めないでください。mysql はそれを正しく処理します。行が作成され、次の自動インクリメントされた int が与えられます。入力した内容を知りたい場合は、mysqli_insert_idを実行して、データベースへの最新の挿入の ID を取得できます。(これはphpを使用したmysqliドライバーを前提としています。言語について言及していないため、他の言語/ドライバーが同様の機能をサポートしていると推測しました)。それはあなたの質問に答えていますか?
効率的なアクセスのためにメモリにデータを保存したい場合は、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 接続をインスタンス化したくないので、何らかのシングルトン パターンを使用するか、より好ましくは依存性注入を使用することに注意してください。
SHOW TABLE STATUS LIKE 'table'
挿入の前に読んでいる場合は、Auto_increment 列を読み取ります。
またはmysqli_insert_id
挿入後に読み取る場合