• 締切済み

ロールバックできないステートメントについて

こんばんは。 既存のテーブルのカラムを削除することになりまして、 以下の手順で変更をかけました。 環境:mysql_5.5 mysql>begin; mysql>alter table test_table drop column test_column; mysql>desc test_table; mysql>rollback; mysql>desc test_table; しかし、ロールバックをかけても元に戻らなかったのですが、 http://dev.mysql.com/doc/refman/5.1/ja/cannot-roll-back.htmlhttp://dev.mysql.com/doc/refman/5.1/ja/cannot-roll-back.html の記述にあるようにバージョン5.5でもalterでのロールバックは出来ないのでしょうか。 英語のサイトを見たのですが、ただしく訳せませんでした。 http://dev.mysql.com/doc/refman/5.5/en/implicit-commit.htmlhttp://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html 回避方法があったら、教えてください。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

そもそも、rollbackは、データの変更(挿入・削除・アップデート)を無かったことにするコマンドです。 テーブル構造の変更は対象外です。これはMySQLに限らずRDBMS一般の基本です。

momo_chi_chi
質問者

お礼

回答ありがとうございます。 知り合いが、PostgreSQLでテーブル作成や定義変更の際にrollbackしてると言っていたので、Mysqlでも出来るのか調べていたのですが、自分の聞き違いかも知れないのないので、もう一度確認をとってみます。 ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

暗黙のコミットを引き起こすステートメント http://dev.mysql.com/doc/refman/5.1/ja/implicit-commit.html

momo_chi_chi
質問者

お礼

回答ありがとうございます。 「暗黙のコミットを引き起こす」ということだったので、 SET AUTOCOMMIT = 0; にしてやってみたんですが、やはりロールバックできていなかったので そういうことではなかったんですね。 今後は、気をつけながらやっていきます。