![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPでMySQLをやっています。
異なる2つのテーブルに同時にinsertをしようと思い、transactionを使って
片方がエラーならどちらにもinsertしないこと期待したのですが、
どうも効いてないみたいなんです・・・
mysql_query("begin transaction;") or $errStr= mysql_errno() . ": " . mysql_error(). "\n";
$sqlstr = "INSERT INTO table1 (id, name) VALUES ("aaaa", "山田");";
mysql_query($sqlstr) or $errStr= mysql_errno() . ": " . mysql_error(). "\n";
$sqlstr = "INSERT INTO table2 (id, name) VALUES ("bbbb", "佐藤");";
mysql_query($sqlstr) or $errStr= mysql_errno() . ": " . mysql_error(). "\n";
mysql_query("commit transaction;") or $errStr= mysql_errno() . ": " . mysql_error(). "\n";
※table1には既に「id:aaaa name:鈴木」が入っています
を実行して重複エラー
「1062: Duplicate entry 'aaaa' for key 1 」
が出たのですが、table2には「id:bbbb name:佐藤」が入ってしまいます。
もちろんtable1には「id:aaaa name:山田」は入りません。
どうすればトランザクションが効くようになるのでしょうか?
No.1ベストアンサー
- 回答日時:
MySQL側の原因であればこの辺じゃないでしょうか。
・テーブルを作成時にInnoDBにしていない。
・DB接続時に自動コミットモードが有効になっている。
↓この辺が参考になるかも。
http://www.y2sunlight.com/ground/?MySQL4.1%2F9.M …
ご返答ありがとうございます。
テーブルをInnoDBにしてませんでした・・・
InnoDBにしてみたらできました。ありがとうございます。
あとROLLBACK;も使う必要がありました。
mysql_query($sqlstr) or $errStr= mysql_errno() . ": " . mysql_error(). "\n";
if($errStr){ mysql_query("ROLLBACK;"); }
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlのデータベースの内容をph...
-
PHPでMySQLテーブルロック一覧取得
-
複数行のクエリを、まとめて実...
-
接続ができません
-
like句を使って日本語を検索す...
-
MySQLカラム名は日本語と英数字...
-
ORACLE6でバージョンの表示方法
-
二進数を勉強しているのですが...
-
PHPのサンプルコードが意図した...
-
MySQLの日本語LIKE検索について
-
PHPでMySQLを使った検索のプロ...
-
パスワードが設定できない。。
-
筆ぐるめ住所録のバックアップ...
-
実行時エラー80004005
-
MySQLでエラーがでて前に進めま...
-
ADOのバージョンを確認する方法
-
MAMPでMySQLのパスが通らない
-
DB2 INSERT時の格納順序
-
Mysqlでmysql -u root -p -bが...
-
MySQLやPorstgresなどのサーバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpで複数のDBを使用した場合の...
-
mysqlのデータベースの内容をph...
-
複数行のクエリを、まとめて実...
-
トランザクションが効かない
-
データベースの選択エラー
-
[MySQL]全くクエリーキャッシュ...
-
新規ユーザ作成・ログインでき...
-
PHP+MySQL on さくらサーバー
-
show databasesコマンドが効かない
-
緊急です。insert文が実行されない
-
Warning: mysql_num_rows()
-
C言語で変数の内容をINSERTする...
-
PHPでMySQLテーブルロック一覧取得
-
MySQLの更新が固まってしまう...
-
MySQLのINSERT文で変数展開がで...
-
初心者ですがupdateがうまくい...
-
MySQLが動かない(テーブルレコ...
-
接続ができません
-
ODP.NETのバージョン確認
-
副問合せにLIKE文を使う方法は...
おすすめ情報