MySQL の AUTO_INCREMENT は ROLLBACK しない
2023-09-13 06:53:52
質問
MySQL の AUTO_INCREMENT フィールドと InnoDB を使用して、トランザクションをサポートしています。トランザクションをロールバックするときに、AUTO_INCREMENT フィールドがロールバックされないことに気づきました。私はそれがこのように設計されていることを知りましたが、これに対する回避策はありますか?
どのように解決するのですか?
とても重要なことを指摘させてください。
自動生成されたキーの数値機能に依存してはいけません。
つまり、等しいか(=)、不等か(<>)を比較する以外には、何もしてはいけないのです。関係演算子 (<, >) やインデックスによるソートなどは行わないことです。もし、"追加日"でソートする必要があるなら、"追加日"列を用意することです。
リンゴとオレンジのように扱います。リンゴとオレンジが同じかどうか尋ねるのは意味がありますか?そうです。リンゴがオレンジより大きいかどうかを尋ねるのは意味があるでしょうか?いいえ(実際はそうですが、私の言いたいことはわかりますよね)。
このルールに従えば、自動生成されたインデックスの連続性にギャップがあっても、問題は発生しません。
関連
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] MySQLのDESCRIBE [table]に相当するSQLiteはありますか?
-
[解決済み] トランザクションを使用するか、SaveChanges(false)とAcceptAllChanges()を使用するか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlのデータ圧縮性能比較 詳細
-
MySQLによる既存テーブルのパーティショニングの実装
-
MySQLで正規表現を使う 詳細
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
SQL Server のトランザクションは、try キャッチに記述しなければ、中間ステートメントがエラーを報告してもコミットされます。
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?