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

我想知道是否有可能在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语句,这可能吗? 的全部内容, 来源链接: utcz.com/qa/416287.html

回到顶部