MySQL で、自動インクリメント フィールドの次の番号を順番にクエリすることは可能ですか?
projects というテーブルの場合、テーブルの主キーproject_idは自動インクリメント フィールドです。新しい行を挿入する前に、project_id に割り当てられる番号を知りたいです。
どうすればそれを照会できますか?
MySQL で、自動インクリメント フィールドの次の番号を順番にクエリすることは可能ですか?
projects というテーブルの場合、テーブルの主キーproject_idは自動インクリメント フィールドです。新しい行を挿入する前に、project_id に割り当てられる番号を知りたいです。
どうすればそれを照会できますか?
リッドは正しい。この質問はFinding the next available id in MySQLの複製のようです
そのスレッドで、ユーザーのEimantasが私が使用した実用的なソリューションを提供してくれました。便宜上、ここに再現します。
SELECT Auto_increment FROM information_schema.tables WHERE table_name='the_table_you_want';
ただし、このスレッドでの egyal と GavinTowey の方向性には敬意を表します。
将来の読者は、競合状態に関する Gavin のコメント (eggyal の回答) に注意することをお勧めします (つまり、別の DB エントリがあなたの数秒前に発生し、取得すると思っていた ID を「盗む」)。
この回答で説明されている方法よりも、eggyal で説明されている LAST_INSERT_ID() を使用することを強くお勧めします。
より良いアプローチであるため、将来の読者にはeggyalの回答に賛成票を投じることをお勧めしますが、この回答にこれ以上反対票を投じないでいただければ幸いです。これは質問が具体的に尋ねたものであるため、これは「正しい」答えです-eggyalsの反対票にもかかわらず。つらい気持ちはないと信じています。ご存知のように、私自身の答えを正しいものとして選択しても、私には何のメリットもありません。
逆に、最初に新しいレコードを挿入してから、 を使用してその値を見つけますLAST_INSERT_ID()
。