Existe-t-il un moyen de récupérer les valeurs générées par la base de données dans Java autres que les champs IDENTITY? Je peux facilement obtenir des valeurs IDENTITY à partir d'un ResultSet, mais j'aimerais obtenir la valeur d'un champ date qui a été généré par la base de données (CURRENT_TIMESTAMP). Je préfère ne pas envoyer une autre requête SELECT pour obtenir la date.Obtenez CURRENT_TIMESTAMP dans le cadre de ResultSet
statement = connection.prepareStatement("INSERT INTO foo (bar_date) VALUES (CURRENT_TIMESTAMP)");
ResultSet generatedKey = statement.getGeneratedKeys();
while (generatedKey.next()) {
// read the key..., this unfortunately only returns IDENTITY columns.
}
Super, ça marche bien. Je suppose qu'il n'y a pas de manière indépendante de la base de données de faire cela ... (comme
Max
@Max - La clause OUTPUT ne semble pas faire partie du standard ANSI, donc c'est un serveur SQL seulement. Les autres moteurs de base de données peuvent avoir leurs propres implémentations; Oracle a 'RETURNING', que Postgres implémente également. Il n'y a pas d'équivalent dans MSSQL avant 2005, ou dans sqlite d'ailleurs. La méthode la plus portable consisterait à intégrer la logique dans une procédure stockée qui renvoie un ensemble de résultats (ou des paramètres de sortie) - mais cela ne sera pas indépendant de la base de données en raison des différences d'implémentation SP dans chaque SGBDR. –
Merci encore. Je vais prendre cela en considération. – Max