Получить CURRENT_TIMESTAMP как часть ResultSet - PullRequest
0 голосов
/ 18 ноября 2010

Есть ли способ получить сгенерированные базой данных значения в Java, кроме полей IDENTITY?Я легко могу получить значения IDENTITY из ResultSet, но я хотел бы получить значение поля даты, которое было сгенерировано базой данных (CURRENT_TIMESTAMP).Я предпочитаю не отправлять другой запрос SELECT, чтобы получить дату.

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.
}

Ответы [ 2 ]

2 голосов
/ 18 ноября 2010

Вы пробовали что-то вроде

INSERT INTO foo (bar_date) 
OUTPUT INSERTED.bar_date
VALUES (CURRENT_TIMESTAMP)

Посмотрите на Предложение OUTPUT (Transact-SQL)

0 голосов
/ 18 ноября 2010

Если вы используете SQL 2005 или более позднюю версию, вы можете добавить предложение OUTPUT в оператор вставки, чтобы оно возвращало набор результатов.

Я не уверен в синтаксисе Java для получения набора результатов, но это будет что-то вроде следующего:

statement = connection.prepareStatement("INSERT INTO foo OUTPUT inserted.id, inserted.bar_date (bar_date) VALUES (CURRENT_TIMESTAMP)"); //guessing the name of the id column
ResultSet returnSet = statement.execute(); // or however you do this
while (resultset.next()) {
  // resultset will have two columns - id and bar_date
}
...