问一个问题,更新是不是没有必要加事务?
如果加了,是不是得判断?
我看到这么一个存储过程,代码如下:
start transaction;  update table1 ...
  update table2 ...commit;
这个里面既没有rollback,也没有定义出错后存储过程的行为。那么我是不是可以理解这么写有问题?因为update不会失败,只能是更新0条记录。那么同时请问,类似的update事务应该怎么做?
就是我想同时更新10个表,但是又想放到事务中。有这种需求吗?

解决方案 »

  1.   

    看看有无
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION ....
      

  2.   

    问一个问题,更新是不是没有必要加事务?
    如果确定UPDATE语句正确无误,可以,否则应该加如果加了,是不是得判断?
    YES
      

  3.   

    那怎么判断呢?if row_count() = 0 ?我怎么知道它更新成功了?更新有一个问题,如果where的条件不存在,他好像会更新0条。
    但是如果更新的值和目标值一样,他也会更新0条。我如何知道是第一种情况???????????
      

  4.   

    加事务,只是为了保证数据的完整性、一致性
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION ....
      

  5.   

    declare exit handler for sqlexception rollback;
    start transaction;  update table1 ...
      update table2 ...commit;
      

  6.   

    在UPDATE之前 ,先COUNT(),根据结果判断
      

  7.   

    加事务,只是保证这两个UPDATE要么都执行,要么都不执行。有没有成功,你可以看看ERROR信息有不有 @@erro_count