😺

MySQLの暗黙的コミット

2024/03/29に公開

結論

MySQLはDDL、つまりテーブルやカラムの構造を操作する命令、つまり「ALTER ...」などなど、を実行すると暗黙的コミットを行います。
つまり、そういった処理で「beginTransaction」とか「rollback」とか「commit」とか頑張って書いても無駄です。
ロールバックしても元には戻りませんし、コミットなんか書かなくても勝手にコミットされます。

そういう場面に出会うか、と言われるとあまり出会わないと思いますが、弊社のDB設計WEBアプリケーション「N-DEV」ではそういう処理をかなりやるので、こりゃ大変だ、ってなわけで。

参考:
https://dev.mysql.com/doc/refman/8.0/ja/implicit-commit.html
https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0134#:~:text=compose up -d-,暗黙的なコミットとは?,後もコミットされます。

因みに

試してはいませんが、PostgreSQLだとDDLでも暗黙的コミットはしない、つまり寧ろ、DDLのあとでもコミットが必要、らしいです。
「N-DEV」はPostgreSQLと相性良い気がする、PostgreSQL使ってみようかな
ッてな話です、

Discussion