当前位置: 首页 > 面试题库 >

MyBatis一口气执行多个sql语句,这可能吗?

顾宣
2023-03-14
问题内容

我想知道是否有可能在1 go中执行多个sql语句。例如,我想从多个表中删除行的情况,有没有一种我可以做的事情..

<delete id="delete" parameterType="String">
    DELETE FROM DUMMYTABLE_A where X=${value}
    DELETE FROM DUMMYTABLE_B where X=${value}
</delete>

问题答案:

是的,大多数数据库都允许这样做。通常,您必须使用一些东西来分隔SQL语句。在PostGRES和MySQL中,它是一个分号(;)。在Microsoft SQL
Server中,应使用关键字GO。[2013年5月更新:自SQL Server 2012起,您可以并且应该使用分号分隔语句。在SQL Server
2012之后(即下一版本和更高版本),这些将是必需的。现在,在SQL2012及更高版本中,现在不建议使用GO。]

MySQL / PostGRES示例:

 DELETE FROM DUMMYTABLE_A where X=${value};
 DELETE FROM DUMMYTABLE_B where X=${value};
 DELETE FROM DUMMYTABLE_C where X=${value};

MS-SQL示例:

 DELETE FROM DUMMYTABLE_A where X=${value}
 GO
 DELETE FROM DUMMYTABLE_B where X=${value}
 GO
 DELETE FROM DUMMYTABLE_C where X=${value}

更好的数据库(即不是MySQL)也将支持使用BEGIN TRAN / COMMIT TRAN / ROLLBACK
TRAN的事务。使用事务,您实际上可以将所有语句批处理到一个原子操作中,如果其中一部分失败,则将所有三个语句回滚。有关这些方面的更多信息,请参见http://www.sqlteam.com/article/introduction-
to-transactions。

不过,您最可能需要的只是SQL语句之间的分号!



 类似资料:
  • 本文向大家介绍MyBatis 执行动态 SQL语句详解,包括了MyBatis 执行动态 SQL语句详解的使用技巧和注意事项,需要的朋友参考一下 大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中: 你可以如下调用: 或者你可以在 XXMapper.java 接口中定义如下方法: 然后使用接口调用方法: 上面这些内容可能都会,下面在此

  • 问题内容: 我想在 Java中 执行查询。 我创建一个连接。然后,我想执行一条语句,完成后关闭连接,但是我想通过连接执行一些插入语句,并在循环完成后关闭连接。 我能做些什么 ? 我的示例代码是: 当执行select语句()时,循环必须为两次,但是当()执行并完成时,则关闭连接并从类中返回。 问题答案: 以下示例使用&命令同时执行多个SQL命令。 结果: 以上代码示例将产生以下结果。结果可能会有所不

  • 问题内容: 说我想做,如何在同一个mysql_query()中做它们? 编辑: 由于这个问题有很多看法,我想指出,自PHP 5.5起,其他功能现在已被弃用,不应使用。 问题答案: 我从来没有尝试过,但是我认为您可以使用mysqli :: multi_query 。拒绝多条语句的好处之一是,它可以立即排除一些更常见的SQL注入攻击,例如添加一条语句。因此,您可能需要注意多个语句。

  • 这是我的实体类 org.springframework.dao.DataIntegrityViolationException:不能执行语句;SQL[N/A];约束[created_at];嵌套异常是org.hibernate.exception.constraintViolationException:在org.springframework.orm.jpa.vendor.hibernatejp

  • 问题内容: 我想一次执行多个查询或作业。像这样的东西: 或多个选择查询。查询将是动态的。 但是我无法做到这一点,以半冒号分隔的多个查询的运行方式是什么? 问题答案: 您可以使用以下示例实现addBatch和executeBatch命令同时执行多个 SQL 命令。 批处理允许您将相关的SQL语句分组为一个批处理,并通过一次调用将其提交给数据库。参考 当您一次将多个SQL语句发送到数据库时,可以减少通

  • 我正在使用Java (JDBC)创建一个命令行实用程序来执行SQL语句。脚本被定义为一个文本文件,有许多查询。每个查询由查询分隔符(";"分隔).输出被路由到stdout。 由于JDBC可以批量执行语句,只有当它们不返回ResultSet时,我才需要另一种方法。 截至目前,我将读取带有查询的脚本文件,按分隔符拆分它们,并分析每个查询,无论是“SELECT”查询,还是“INSERT”,“更新”,“删