dポイントプレゼントキャンペーン実施中!

PHPとMysqlを利用しています。MySQL4.1.18です。

同じテーブルに2つ以上の値をINSERTする場合、
1つでもエラーがあればロールバックさせるということはできますでしょうか。

あらかじめ「id=1」の値を登録しておき、この場合1つめがエラーになるので
2つめも実行されないでほしいのですが、実行されてしまいます。
テーブルのタイプはInnoDBにしています。

どうぞよろしくお願いします。

以下を参考に作成しました。
http://oshiete.nikkeibp.co.jp/qa3065237.html

$sql = "begin";
$rst = mysql_query($sql, $con);
//1つめ
$sql= "INSERT INTO T_test(id,name)values('1','山田')";
$rst = mysql_query($sql, $con);
if(!$rst){$err="err";}
//2つめ
$sql= "INSERT INTO T_test(id,name)values('2','鈴木')";
$rst = mysql_query($sql, $con);
if(!$rst){$err="err";}

$sql = "commit";
$rst = mysql_query($sql, $con);

if($err){
$sql = "rollback";
$rst = mysql_query($sql, $con);
}

A 回答 (1件)

ROLLBACKより前にCOMMITを実行しているように見えますが…。



エラーがなければCOMMIT、エラーがあればROLLBACKを実行するようにロジックを変える必要があるのではないですか?
    • good
    • 0
この回答へのお礼

Cerenさんありがとうございます。

初めてトランザクション処理をしたのでよくわかっていませんでした。
commitの前にrollbackを記述したところうまくいきました。
ありがとうございました。

お礼日時:2007/06/15 15:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!