数据库版本为mysql8
springboot 2.5.6。
论坛里有别的博客说的truncate 后的sql无法提交的情况,在我使用的版本没有出现,可能他用的是比较老的版本。
public class TestTeacherController extends BaseController {
@Resource
private JdbcTemplate jdbcTemplate;
@ApiOperation("删除数据")
@PostMapping("delete")
@Transactional
public ServiceResult delete() {
// jdbcTemplate.batchUpdate("truncate table test_stu");
//1.truncate 在事务中执行后无法回滚,就算发生异常也无法回滚
//2.truncate会强制提交事务,不会等事务方法内的所有sql执行完再提交数据库事务.
//3.truncate成功后,后面的sql会继续执行,后面的事务会继续生效
//下面的sql 第一句第二句会跟着第三句的truncate提交,truncate后面的第四局sql会因为 i=1/0 的异常而回滚
jdbcTemplate.batchUpdate("INSERT INTO `atcc`.`test_stu`(`id`, `name`, `ege`) VALUES (13, 'wang', '16');\n");
jdbcTemplate.batchUpdate("INSERT INTO `atcc`.`test_stu`(`id`, `name`, `ege`) VALUES (14, 'zhao', '16');\n");
jdbcTemplate.batchUpdate("truncate table test_teacher");
jdbcTemplate.batchUpdate("INSERT INTO `atcc`.`test_stu`(`id`, `name`, `ege`) VALUES (15, 'zhao', '16');\n");
int i=1/0;
return success();
}
}