假设我有三张表:team、player、team_player。表 team_player 是一个允许“多对多”关系的桥接表。
当有人想要创建一个新团队时,他们会指定该团队的初始玩家。
如何在同一事务中同时插入 team 和 team_player 行?也就是说,我想在提交到新的团队行之前插入所有 team_player 记录。我正在使用 JDBC 和 Oracle。
当我尝试下面的代码时,即使 team.id 是一个数字(由触发器递增),teamId 也会填充一串字母。因此,这似乎不是我刚刚尝试插入的记录的 ID(但尚未提交)。
c = DB.getConnection();
c.setAutoCommit(false);
sql = "INSERT INTO team (name) values (?)";
myInsert = c.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
myInsert.setString(1, "cougars");
int affectedRows = memoInsert.executeUpdate();
String teamId;
ResultSet generatedKeys = myInsert.getGeneratedKeys();
if (generatedKeys.next()) {
teamId = generatedKeys.getString(1);
}
// ...loop through players inserting each player and team.id into team_player
// c.commit();
这是我阅读 RETURN_GENERATED_KEYS 的地方: 如何在 JDBC 中获取插入 ID?