4

MySQL で、自動インクリメント フィールドの次の番号を順番にクエリすることは可能ですか?

projects というテーブルの場合、テーブルの主キーproject_idは自動インクリメント フィールドです。新しい行を挿入する前に、project_id に割り当てられる番号を知りたいです。

どうすればそれを照会できますか?

4

2 に答える 2

5

リッドは正しい。この質問は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の反対票にもかかわらず。つらい気持ちはないと信じています。ご存知のように、私自身の答えを正しいものとして選択しても、私には何のメリットもありません。

于 2012-09-05T16:00:24.090 に答える
1

逆に、最初に新しいレコードを挿入してから、 を使用してその値を見つけますLAST_INSERT_ID()

于 2012-09-04T20:58:51.240 に答える