百度了一下(google被》》》疯,翻******强软件也被搞死),发现是这样的,先用begin;和commit;
BEGIN; #事务处理
  SELECT A into iCount from txpxx where  SH=3 FOR UPDATE;#事务处理,for UPDATE 在此的作用,使其他用户执行此语句时,先等前面的用户执行完事务。
  update ........
COMMIT; //提交事务
我发现,Begin;这句语法错误,把它注销掉就能编译。我的是mysql 5.1版本的。help,请问怎么回事????不用begin;怎么知道从哪开始事务呢?
还有一种方法,就是set autocommit=0 ;set autocommit=1;;但是这种方法能保证线程同步吗?也就是类似桌面应用程序的临界区,即某段代码,同时只能有一个线程在运行。

解决方案 »

  1.   

    set autocommit=1; //这个为自动提交事务,默认
    所以当你提交完事务后,事务已经被处理完成了,不需要在用commit如果要用commit,就得一开始设置set autocommit=0;使用
    set autocommit=0;
    commit;
    这个应该是可以保证现成同步
      

  2.   

    存储过程中,你不要用BEGIN,应该用START TRANSACTION
      

  3.   

    strat transaction
      insert into ...
      insert inot ...
    commit
      

  4.   

    1.方法一
    SET AUTOCOMMIT=0;
    .......COMMIT OR ROLLBACK;2.方法二
    START TRANSACTION;
    ..............
    COMMIT;3.BEGIN COMMIT 是最古老的方式!#****************************************#
    MySQL技术及运维自动化网:www.mysqlops.com新浪微博账号:http://weibo.com/mysqlops
    #****************************************#