Gibt es eine Möglichkeit zum Abrufen von Datenbank generierten Werten in Java anders als IDENTITY Felder? Ich kann leicht IDENTITY-Werte von einem ResultSet erhalten, aber ich möchte den Wert eines Datumsfeldes erhalten, das von der Datenbank (CURRENT_TIMESTAMP) erzeugt worden ist. Ich möchte lieber keine weitere SELECT-Abfrage senden, um das Datum zu erhalten.Get CURRENT_TIMESTAMP als Teil von 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.
}
Großartig, das funktioniert gut. Ich nehme an, dass es keinen datenbankunabhängigen Weg gibt ... (zB
Max
@ Max - die OUTPUT-Klausel scheint nicht Teil des ANSI-Standards zu sein, also ist es nur SQL Server. Andere Datenbank-Engines können ihre eigenen Implementierungen haben; Oracle hat 'RETURNING', das auch Postgres implementiert. Es gibt keine Entsprechung in MSSQL vor 2005 oder in SQLite für diese Angelegenheit. Die portabelste Methode wäre es, die Logik in eine gespeicherte Prozedur einzubetten, die eine Ergebnismenge (oder Ausgabeparameter) zurückgibt - dies ist jedoch aufgrund der unterschiedlichen SP-Implementierung in jedem RDBMS nicht datenbankunabhängig. –
Danke nochmal. Ich werde das berücksichtigen. – Max