【问题标题】:Start Transaction OR Begin Work开始交易或开始工作
【发布时间】:2012-05-04 22:08:05
【问题描述】:

不知道Start Transaction OR Begin Work用什么比较好,有什么区别。

【问题讨论】:

    标签: mysql percona


    【解决方案1】:

    来自MySQL manual

    BEGINBEGIN WORK 支持作为 START TRANSACTION 的别名来启动事务。 START TRANSACTION 是标准 SQL 语法,是启动临时事务的推荐方式。

    【讨论】:

    • 很好,但是当我在网络上运行我的 java 应用程序的两个客户端时出现问题,第一个客户端插入一条记录第二个客户端在刷新结果集时可以看到它,现在当第二个客户端插入一条新记录时第一个客户端刷新后看不到该记录,当第一个客户端关闭应用程序并重新运行它时,第二个客户端的记录正常显示!!!!!!所以发生了什么事 ?我如何监控他们两个来追踪我的问题?注意:在 COMMIT 之后将 AutoCommit 设置为 true 时,一切正常。我需要在 my.cnf 上进行任何额外配置吗??
    【解决方案2】:

    这是来自MySQL 8.0 manual的更新答案:

    BEGIN ... END 语法用于编写复合语句,可以出现在存储程序(存储过程和函数、触发器和事件)中。

    这意味着 BEGIN ... END 语法仅用于构建代码并启用嵌套(此块可以嵌套)。 在手册后面:

    在所有存储的程序中,解析器将 BEGIN [WORK] 视为 BEGIN ... END 块的开始。要在此上下文中开始事务,请改用 START TRANSACTION。

    这意味着 BEGIN/BEGIN WORK 是 BEGIN ... END 语法中 BEGIN 的别名,它们不是 START TRANSACTION 的别名。在存储过程、函数、触发器和事件中,您应该始终使用 START TRANSACTION 来启动事务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 2021-06-06
      • 2011-10-06
      相关资源
      最近更新 更多