MySQL 中是否有 SQL Server 的 @@error 的等效项

Is there an equivalent for SQL Server#39;s @@error in MySQL(MySQL 中是否有 SQL Server 的 @@error 的等效项)
本文介绍了MySQL 中是否有 SQL Server 的 @@error 的等效项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想对生产数据库运行更新查询,作为优秀的小开发人员,我正在努力使其尽可能安全.我正在做以下事情

I want to run an update query against a production database and as good little developer I am trying to make it as safe as possible. I am looking to do the following

BEGIN TRANSACTION
    UPDATE table_x SET col_y = 'some_value'
    .
    .
    .
IF (@@error <> 0)
BEGIN
    ROLLBACK
END
ELSE
BEGIN
    COMMIT
END

以上应该在 SQL Server 中工作,但我需要它来处理 MySQL 数据库.

The above should work in SQL Server but I need this to work against a MySQL database.

抱歉,要执行的语句超过 1 个.是的,我知道不需要在事务中包装单个查询.

Sorry, there is more than 1 statement to execute. Yes I am aware of not needing to wrap a single query in a transaction.

推荐答案

我不认为这是必要的,因为有隐式提交/回滚的概念.

I don't think this is necessary as there is the concept of implicit commit/rollback.

来自 MySQL 文档:

默认情况下,MySQL 启动会话对于每个新的连接启用自动提交模式,所以 MySQL 会在每个 SQL 语句之后提交,如果该语句没有返回错误.如果一个语句返回一个错误,提交或回滚行为取决于错误.见章节13.6.13,InnoDB 错误处理".

By default, MySQL starts the session for each new connection with autocommit mode enabled, so MySQL does a commit after each SQL statement if that statement did not return an error. If a statement returns an error, the commit or rollback behavior depends on the error. See Section 13.6.13, "InnoDB Error Handling".

这篇关于MySQL 中是否有 SQL Server 的 @@error 的等效项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)