EDIT: la réponse liée n'utilise pas LAST_INSERT_ID
, toujours à la recherche de réponse. J'utilise JBoss et j'obtiens des connexions via DataSource (JNDI).Chaîne instructions MySQL sous JBoss
Comment puis-je enchaîner et exécuter plusieurs instructions SQL en une seule fois, où la deuxième instruction dépend de la sortie du premier (LAST_INSERT_ID()
)
preparedStatement = connection.prepareStatement("INSERT INTO product(name) VALUES(?); INSERT INTO brand_product(brand_id, product_id) VALUES(?, LAST_INSERT_ID())", Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, name);
preparedStatement.setInt(2, brandId);
if(preparedStatement.executeUpdate() != 0) {
try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) {
if(generatedKeys.next()) {
product = new Product(generatedKeys.getInt(1), name);
}
}
};
S'il vous plaît noter: J'ai produit clés utilisés aussi bien , la deuxième table ne génère aucune clé car c'est une table de jointure.
il est pas double emploi, ma question utilise 'LAST_INSERT_ID' – user2727195
double possible de [MySQL ConnectorJ avec plusieurs instructions SQL] (http://stackoverflow.com/questions/9219552/mysql-connectorj-with-multiple-sql -statements) –
@GordThompson le lien dans la réponse est brisé, pouvez-vous s'il vous plaît lier la page ici, j'utilise JBOSS, et la connexion via la source de données, JNDI – user2727195