dongshan3806 2016-10-12 15:32 采纳率: 0%
浏览 47

在交易中。 每次失败都需要回滚吗? 或者在没有提交的情况下退出脚本就足够了?

suppose I have this code

 $transactionfailed = false;
 $mysqliconn->query("begin;");
 //query 1
 $result=$mysqliconn->query("insert into table(col1,col2) values('$val1','val2')");
 if(!$result){$transactionfailed=true;}
 //query 2
 $result=$mysqliconn->query("insert into table2(col1,col2) values('$val1','val2')");
 if(!$result){$transactionfailed=true;}
 if($transactionfailed){$mysqliconn->query("rollback;");}
 else{$mysqliconn->query("commit;");}
 die();

I want to replace it with this one

 $mysqliconn->query("begin;");
 //query 1
 $result=$mysqliconn->query("insert into table(col1,col2) values('$val1','val2')");
 if(!$result){die("error");}
 //query 2
 $result=$mysqliconn->query("insert into table2(col1,col2) values('$val1','val2')");
 if(!$result){die("error");}
 $mysqliconn->query("commit;");
 die();

I want to end the script if something wrong happened without rolling back or committing, depending on mysql database to roll back the transaction if I didn't commit it.

I tried it many times, and yes it do rollback the transaction if I exit without commit. but is this always SAFE ?. or there is something I miss. because I don't want that query2 is failed and query1 is committed one day later.

  • 写回答

1条回答 默认 最新

  • duanpa5237 2016-10-12 15:53
    关注

    I suggest using try/catch blocks,
    put 'begin' query before try block
    put your 'insert' queries in the try block
    put your 'rollback' query in the catch block
    if no query failed in the try block 'commit' once lastly in the try block
    if any query failed in the try block 'rollback' once in the catch block (all queries after the begin query will be rolled back)

    评论

报告相同问题?

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教