1. ホーム
  2. mysql

MySQL の AUTO_INCREMENT は ROLLBACK しない

2023-09-13 06:53:52

質問

MySQL の AUTO_INCREMENT フィールドと InnoDB を使用して、トランザクションをサポートしています。トランザクションをロールバックするときに、AUTO_INCREMENT フィールドがロールバックされないことに気づきました。私はそれがこのように設計されていることを知りましたが、これに対する回避策はありますか?

どのように解決するのですか?

とても重要なことを指摘させてください。

自動生成されたキーの数値機能に依存してはいけません。

つまり、等しいか(=)、不等か(<>)を比較する以外には、何もしてはいけないのです。関係演算子 (<, >) やインデックスによるソートなどは行わないことです。もし、"追加日"でソートする必要があるなら、"追加日"列を用意することです。

リンゴとオレンジのように扱います。リンゴとオレンジが同じかどうか尋ねるのは意味がありますか?そうです。リンゴがオレンジより大きいかどうかを尋ねるのは意味があるでしょうか?いいえ(実際はそうですが、私の言いたいことはわかりますよね)。

このルールに従えば、自動生成されたインデックスの連続性にギャップがあっても、問題は発生しません。