mybatis 带分号批量sql,MyBatis一次执行多个sql语句,这可能吗?

i was wondering if it is possible to execute multiple sql statements in 1 go.

For example the scenario that i want to delete rows from multiple tables, is there a way i can do things like..

DELETE FROM DUMMYTABLE_A where X=${value}

DELETE FROM DUMMYTABLE_B where X=${value}

解决方案

Yes, most databases allow this. Usually you have to delimit your SQL statements with something. In PostGRES and MySQL it's a semicolon (;). In Microsoft SQL server you should use the keyword GO. [ May 2013 Update: As of SQL Server 2012, you can and should use semicolons to delimit your statements. After SQL Server 2012 (ie. the next version and beyond) these will be mandatory. Using GO is now the deprecated way to do things in SQL2012 and beyond). ]

MySQL / PostGRES example:

DELETE FROM DUMMYTABLE_A where X=${value};

DELETE FROM DUMMYTABLE_B where X=${value};

DELETE FROM DUMMYTABLE_C where X=${value};

MS-SQL example:

DELETE FROM DUMMYTABLE_A where X=${value}

GO

DELETE FROM DUMMYTABLE_B where X=${value}

GO

DELETE FROM DUMMYTABLE_C where X=${value}

Better databases (ie. not MySQL) will also support transactions with BEGIN TRAN / COMMIT TRAN / ROLLBACK TRAN. Using transactions you can actually batch all the statements into one atomic operation, where if part of it failed, all three would be rolled back. See http://www.sqlteam.com/article/introduction-to-transactions for some more information about those.

Most likely all you need is the semicolons between your SQL statements though!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值