假设我查询“ UPDATE table SET etc etc

然后我“执行”这个查询

如果查询正常,则执行,如果查询有错误,则返回mysql错误

我的问题是......有没有办法做到以下几点:

如果查询有错误,它将返回mysql错误。 但是,如果查询正常,请不要执行,而只是说查询没问题

换句话说,有没有办法检查mysql是否接受我的查询而没有在没有错误的情况下实际修改数据库中的条目?

===============>>#1 票数:4 已采纳

如果您运行的是MySQL 5.6或更高版本,则EXPLAIN可以解决问题。

explain update whatever;

如果查询正常,则显示执行计划。 否则,它返回语法错误。


如果你运行的是较小版本的MySQL,我会看到一些选项:

  1. 建议的选项 :准备一个测试数据库,至少在结构中镜像生产数据库。 理想情况下,它填充测试数据以验证查询不仅在语法上是正确的; 但它按预期工作
  2. 在立即回滚的TRANSACTION范围内运行查询。
  3. 运行略微修改的查询版本以匹配NO ROWS。

例如:

update table set col1 = @val1 where col2 = @val2;

变为:

update table set col1 = @val1 where (col2 = @val2) and 1=0;

所以,如果你运行5.6或更高版本,那么EXPLAIN技巧很简洁。 如果没有,列表中的选项2和3也是巧妙的(ish)技巧。 但是,无论如何,您通常应该使用开发 中的查询来访问开发服务器。

  ask by pillarOfLight translate from so

未解决问题?本站智能推荐:

1回复

无法在MySQL中执行触发器

我有像CallLogs和Activitys这样的表。在这里,我的要求是在CallLogs中的每次插入都需要在Activities中输入一个条目。为此,我正在编写触发器和过程,我正在从触发器中调用过程 程序 执行成功 触发 对于某些列,我提供了静态数据。 对于某些列,
6回复

如何对另一个表链接的两个表执行MySQL选择查询

假设我有一个表,其功能是专门根据OOP链接其他两个表。 假设我有两个表:一个用于人名,另一个用于电话号码: 然后我有第三个表连接此人及其各自的电话号码: 因此约翰的电话号码是23424224,史密斯的电话号码是23424242。 我想运行一个SQL查询来获取表1中所有
6回复

MySQL唯一行

我需要一排没有重复的独特行,我想找到相互间出现次数最多的一对(演员对)。 例如: 我的输出: 我需要: 这是代码:
4回复

MySQL UNION问题

我有这个查询: 我收到错误: 我正在尝试使用UNION命令将这2个选择结合在一起,如果我们看起来returnlog_date和invoice_date具有相同的数据条件,那么如果有任何方法可以将两个查询都合并为一个,那会更好。
2回复

在php中与仅在mysql中的mysql查询不同的结果

您好,我很难意识到发生了什么问题.. 当我在mysql中运行此语句时。 我收到我想要的结果。 太棒了。 但是然后当我转身在php中调用它时。 并做一个 穿过桌子 我得到的结果是 当我执行var_dump($ row)时,上面的php查询结
1回复

在mysql中获取多行和单行

我有一张桌子 并且我必须在一个sql查询中获得所有单个名称,在这种情况下id = 3和另一个sql所有名称都是倍数,在这种情况下id = 1和id = 2,因为它们具有相同的组。 我想它应该是选择但不确定的选择。 提前致谢。
3回复

MySQL SELECT和子集条件

因此,我有一个主要的WHERE子句条件,但我有另一个条件,即我希望同时满足两个条件的结果首先出现在结果数组中,然后是仅满足主要条件的结果。 一种可能的方式可能是首先根据主要结果进行选择,然后使用第二个条件进行操作。 但是我想看看是否有一种方法可以通过mysql select语句本身完成。
1回复

在选择MySQL中优化索引

我有一个约会网站,多年来我一直在尝试优化此查询。 该网站几乎每天都会因此而陷入困境。 用户表结构: 索引 查询示例 总结样本查询的条件 我是male=1而搜索female=2 排除一些ids between 1961 AND 1999出生
3回复

mysql特定选择与顺序[重复]

这个问题已经在这里有了答案: SQL:按优先级排序,但最后 5个答案为 0 我有列price桌子products 。 它具有带有值的行: 我应该使用select哪些参数来获得如下结果:
3回复

MySQL:将值检索到不同的列中

请看下面的代码。 在这里,如果Transactions.Transaction_Amount > 0,那么我需要在“添加”列中显示此值,否则需要在“ Encashment”列中显示此值。 但是我的代码生成错误如下。 我该如何解决?