Как я могу рассматривать значение последовательности как сгенерированный ключ? - PullRequest
1 голос
/ 30 апреля 2010

Вот моя ситуация и мои ограничения:

  1. Я использую Java 5, JDBC и DB2 9.5

  2. Моя таблица базы данных содержит значение BIGINT, которое представляет первичный ключ. По различным причинам, которые слишком сложны для понимания, я вставляю записи в таблицу, выполняя вставку в VIEW; триггер INSTEAD OF извлекает NEXT_VAL из SEQUENCE и выполняет INSERT в целевой таблице.

  3. Я могу изменить триггеры, но не могу изменить базовую таблицу или общий подход вставки через представление.

  4. Я хочу получить значение последовательности из JDBC, как если бы это был сгенерированный ключ.

Вопрос : Как я могу получить доступ к значению, полученному из ПОСЛЕДОВАТЕЛЬНОСТИ. Есть ли какое-нибудь сообщение, которое я могу запустить в DB2, чтобы передать это значение последовательности обратно в драйвер JDBC?

Разрешение : Я прибег к извлечению PREVIOUS_VAL из последовательности в отдельном вызове JDBC.

Ответы [ 2 ]

0 голосов
/ 02 мая 2010

Вы должны быть в состоянии сделать это, используя синтаксис FINAL TABLE:

select * from final table (insert into yourview values (...) );

Это вернет данные после срабатывания всех триггеров.

0 голосов
/ 30 апреля 2010

Вы смотрели на java.sql.Statement.getGeneratedKeys ()? Я бы не надеялся, что ты делаешь что-то необычное, но никогда не знаешь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...