L'obtention de l'id après avoir insérer au sein d'une transaction (Oracle)

Disons que j'ai trois tables: l'équipe, le joueur, team_player. Tableau team_player est une table de bridge en permettant un "plusieurs à plusieurs" de la relation.

Quand quelqu'un veut créer une nouvelle équipe, ils précisent les initiales des joueurs de l'équipe.

Comment puis-je insérer à la fois l'équipe et team_player rangées dans la même transaction? C'est, je voudrais insérer toutes les team_player dossiers avant de s'engager dans la nouvelle équipe la ligne. Je suis à l'aide de JDBC et Oracle.

Quand j'ai essayer le code ci-dessous, teamId est rempli avec une chaîne de lettres, même si l'équipe.id est un nombre (qui est incrémenté par un déclencheur). Donc, cela ne semble pas être l'id de l'enregistrement que je viens d'essayé d'insérer (mais il n'a pas s'engager pour le moment).

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();

C'est là que j'ai lu sur RETURN_GENERATED_KEYS:
Comment faire pour obtenir l'insert ID en JDBC?

Oracle a des séquences. Ils fonctionnent très bien dans ces sortes de situations.

OriginalL'auteur latj | 2013-07-03