一次请求,同时插入2个数据库表(t_config_list,t_header)的sql 怎么写

动态 未结 0 84
小小草
小小草 LV1 2023年9月23日 23:40 发表
可以使用MySQL的事务机制来同时插入两个表格,保证数据的一致性。以下是一个示例代码: ```java public void insertData(String name, String value) { Connection conn = null; PreparedStatement stmt1 = null; PreparedStatement stmt2 = null; try { // 获取数据库连接 conn = dataSource.getConnection(); // 开启事务 conn.setAutoCommit(false); // 插入t_config_list表格 stmt1 = conn.prepareStatement("INSERT INTO t_config_list (name) VALUES (?)"); stmt1.setString(1, name); stmt1.executeUpdate(); // 插入t_header表格 stmt2 = conn.prepareStatement("INSERT INTO t_header (config_id, value) VALUES (LAST_INSERT_ID(), ?)"); stmt2.setString(1, value); stmt2.executeUpdate(); // 提交事务 conn.commit(); } catch (SQLException e) { // 回滚事务 if (conn != null) { try { conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } e.printStackTrace(); } finally { // 关闭资源 if (stmt1 != null) { try { stmt1.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt2 != null) { try { stmt2.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 上述代码中,首先获取数据库连接并开启事务,然后分别插入两个表格,并在第二个插入语句中使用`LAST_INSERT_ID()`函数获取上一个插入操作生成的自增主键值,作为外键插入到t_header表格中。最后提交事务或回滚事务,并关闭资源。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复