![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
こんばんは。
テーブルのエンジンは?
まさかMyISAMでやろうとしてるんじゃ・・・?
トランザクションが使用できるエンジンを使わないと駄目です(InnoDBとか)。
No.5
- 回答日時:
クエリにトランザクション命令渡してないとかっていうことはありませんか?
mysql_query("begin")
mysql_query("rollback")
mysql_query("commit")
という感じで。
No.4
- 回答日時:
うまくセッションが引き継がれてないのでは?
単発のSQLを実行すれば当然ロールバックもなにもなく
オートコミットされると思いますが・・・
こんな感じでcccやdddがロールバックされないなら抜本的に
設定がおかしいと思いますが・・・
CREATE TABLE hoge(id int PRIMARY KEY NOT NULL AUTO_INCREMENT,data varchar(30)) TYPE=InnoDB;
SET AUTOCOMMIT=0;
BEGIN;
INSERT INTO hoge(data)VALUES ('aaa');
INSERT INTO hoge(data)VALUES ('bbb');
COMMIT;
BEGIN;
INSERT INTO hoge(data)VALUES ('ccc');
INSERT INTO hoge(data)VALUES ('ddd');
ROLLBACK;
BEGIN;
INSERT INTO hoge(data)VALUES ('eee');
INSERT INTO hoge(data)VALUES ('fff');
COMMIT;
SELECT * FROM hoge;
No.3
- 回答日時:
既に他の方が回答されていますが、MyISAMではロールバックができません。
そもそもMySQLにはストレージエンジンというものがあり、テーブルごとにストレージエンジンを指定することができるのですが、ストレージエンジンにはトランザクションに対応したものとそうでないものがあります。ロールバックが効かないということは、トランザクション非対応のストレージエンジンを利用されているのではないかと考えられます。
MySQLの代表的なストレージエンジンにはMyISAMとInnoDBがあり、前者がトランザクション非対応、後者はトランザクション対応です。恐らくMyISAMが使われているのでしょう。テーブルのストレージエンジンを確認するには、
mysql> SHOW CREATE TABLE テーブル名\G
または
mysql> SHOW TABLE STATUS;
というコマンドを実行しましょう。ストレージエンジンを変更するには、
mysql> ALTER TABLE テーブル名 ENGINE=InnoDB;
という具合にコマンドを実行してください。
ただし、ここで注意しなければいけないのは、ストレージエンジンを変更するということは、テーブルの性質が変わってしまうことを意味しますので、アプリケーション側の挙動を変更する必要が出てくるということです。もちろんあまり手を加えなくてもいい場合もありますが、トランザクション対応と非対応ではアプリケーション側の対応も変わります。詳しいことは参考URLを見てください。
参考URL:http://nippondanji.blogspot.com/2009/02/myisamin …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AUTO_INCREMENTの抜け番
-
SQL構文です 画像のようにした...
-
SELECT 文の NULL列は?
-
テーブル名をカラムとして取得...
-
テーブル:生徒名簿 生徒名簿の...
-
外部キーだけのテーブル(主キ...
-
Accessでデータシートに同じデ...
-
SQL*LoaderでCSVから指定した列...
-
update文で改行を入れる
-
テーブルリンク リンク元を知...
-
男性と2人で飲食店に行きテーブ...
-
他のデータベースとのテーブル結合
-
PostgreSQLの断片化の状況を確...
-
SQL 複数テーブルのupdate
-
マテリアライズドビューとスナ...
-
単純なselectが遅くなるのです...
-
特定のカラムが更新されたとき...
-
カラム位置変更
-
一つ前に戻るには…
-
ビューのソートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ロックテーブルサイズ超えのエ...
-
AUTO_INCREMENTの抜け番
-
mysqlでCSVインポートでトラン...
-
SELECT実行中にINSERTしたい
-
MySQL8にバージョンアップした...
-
ロールバックが動作しない。
-
Accessでデータシートに同じデ...
-
SELECT 文の NULL列は?
-
一つ前に戻るには…
-
テーブル名をカラムとして取得...
-
update文で改行を入れる
-
Accessのテーブルデータを一気...
-
SQL、2つのテーブルで条件一致...
-
L2SWはARPテーブルを持っている?
-
外部キーだけのテーブル(主キ...
-
fetch_arrayでのエラー
-
テーブルリンク リンク元を知...
-
他のデータベースとのテーブル結合
-
ROWNUMでUPDATEをしたいのです...
-
男性と2人で飲食店に行きテーブ...
おすすめ情報