
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で質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL mysqlで INSERT と SELECTの用途は 1 2022/04/01 00:45
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー 1068 (42000): 複数の主...
-
mysqlがインストールされている...
-
SQLでカラムを追加し、条件に合...
-
SQLです。こんな感じですか?あ...
-
htmlコードで書かれた表にphpで...
-
#1062 - '0' は索引 'PRIMARY' ...
-
mysqlのupdate構文についての質...
-
テーブル名が可変の場合のクエ...
-
SQLについて教えて下さい。 SEL...
-
(初心者)MySQLやmaraDBで、crea...
-
あってますか?SQL
-
SQLです教えてくださいお願いし...
-
SQLで漢字名称を都道府県や市区...
-
下の画像はSQLの4大命令の性質...
-
データベースの接続に失敗して...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SELECT * FROM `生徒名簿` INNE...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行のクエリを、まとめて実...
-
phpで複数のDBを使用した場合の...
-
PHPでMySQLテーブルロック一覧取得
-
mysqlへ編集の為に、NOとpasswo...
-
AUTO_INCREMENT の値をINSERT前...
-
C言語で変数の内容をINSERTする...
-
MySQLのINSERT文で変数展開がで...
-
トランザクションが効かない
-
phpでmysql操作
-
MySQLの更新が固まってしまう...
-
phpでデーターベース編集
-
番号を付けたい
-
show databasesコマンドが効かない
-
データベースの選択エラー
-
mysql_queryの戻り値
-
[MySQL]全くクエリーキャッシュ...
-
一行目のレコードを2度表示さ...
-
mysql_select_dbの戻り値
-
MySQLで合計と小計の計算方法を...
-
初心者ですがupdateがうまくい...
おすすめ情報