Sybase JDBC получить сгенерированные ключи - PullRequest
1 голос
/ 27 августа 2011

В Postgres я могу написать

INSERT .. RETURNING *

, чтобы получить все значения, которые были сгенерированы во время вставки.В Oracle HSQLDB я могу использовать

String[] columnNames = ...
PreparedStatement stmt = connection.prepareStatement(sql, columnNames);
// ...
stmt.execute();
stmt.getGeneratedKeys();

, чтобы получить все сгенерированные значения.MySQL немного ограничен и возвращает только столбцы, которые установлены на AUTO_INCREMENT.Но как это можно сделать с помощью Sybase SQL Anywhere?Драйвер JDBC не реализует эти методы, и в нем нет условия INSERT .. RETURNING, как в Postgres.Есть ли способ сделать это, кроме запуска

SELECT @@identity

сразу после вставки?

1 Ответ

1 голос
/ 04 сентября 2011

Моя текущая реализация выполняет три последовательных оператора SQL:

-- insert the data first
INSERT INTO .. VALUES (..)

-- get the generated identity value immediately afterwards
SELECT @@identity

-- get the remaining values from the record (possibly generated by a trigger)
SELECT * FROM .. WHERE ID = :previous_identity

Третий оператор можно опустить, если запрошен только столбец ID

...