mysql事务未结束时,可获取新增数据id,可修改新增数据

好奇为何mybatsi在事务未结束时,可以获得新增数据的id。用mysql语句试试:

目前id到29,下次自增到30

1.开一个事务新增语句,不提交事务

2.新建窗口执行新增

3.第2条语句执行成功,id为31,因为30被第一条语句使用了

4.提交第一条语句事务,记录出现

5.如果第一条语句,事务回滚,则30id不会再被使用,以后新增语句从32开始,可以试试。

 

6.在新增事务未提交前,可修改事务中 正在新增的数据。

如下,假设预判到新增语句执行后,数据id是29,在事务中修改 29的数据,再提交,结果是新增和修改都成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过JDBC连接数据库,然后使用SQL语句来实现感知数据库表新增数据的功能。具体步骤如下: 1. 加载数据库驱动程序,建立数据库连接。 2. 编写SQL语句,用于查询表中的数据。 3. 创建Statement对象,执行SQL语句,获取ResultSet结果集。 4. 遍历ResultSet结果集,获取新增数据。 5. 关闭ResultSet、Statement对象和数据库连接。 下面是一个示例代码,用于感知MySQL数据库表中的新增数据: ```java // 加载数据库驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); // 编写SQL语句,用于查询表中的数据 String sql = "SELECT * FROM table WHERE create_time > ?"; // 创建PreparedStatement对象,设置参数,执行SQL语句,获取ResultSet结果集 PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setTimestamp(1, lastUpdateTime); ResultSet rs = pstmt.executeQuery(); // 遍历ResultSet结果集,获取新增数据 while (rs.next()) { String id = rs.getString("id"); String name = rs.getString("name"); // ... } // 关闭ResultSet、PreparedStatement对象和数据库连接 rs.close(); pstmt.close(); conn.close(); ``` 需要注意的是,这里的lastUpdateTime参数可以用于记录上一次查询的间,从而只查询新增数据。另外,实际使用中还需要考虑多线程、事务等并发情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值