Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Reservieren Sie automatisch inkrementierte mySQL-IDs?

Die einzige Möglichkeit, einen Autoinkrementwert zu generieren, besteht darin, die Einfügung zu versuchen. Sie können diese Transaktion jedoch rückgängig machen und trotzdem die generierte ID lesen. In MySQL 5.1 und höher besteht das Standardverhalten darin, dass Auto-Increment-Werte beim Rollback nicht an den Stack "zurückgegeben" werden.

START TRANSACTION;
INSERT INTO mytable () VALUES ();
ROLLBACK;
SELECT LAST_INSERT_ID() INTO @my_ai_value;

Jetzt können Sie sicher sein, dass keine andere Transaktion versucht, diesen Wert zu verwenden, also können Sie ihn in Ihren externen Prozessen verwenden und dann schließlich manuell einen Wert einfügen, der diesen ID-Wert verwendet (wenn Sie einen bestimmten ID-Wert einfügen, tut MySQL dies nicht einen neuen Wert erzeugen).