Я использую Oracle DB V10.2.0.1.0 для своего проекта вместе с Java как сервером. Я пытаюсь добавить данные в несколько таблиц только через код, но для этого требуется использовать одно и то же значение последовательности.JDBC - Get Sequence CURRVAL после использования NEXTVAL с помощью триггера
У меня есть последовательность, которая представляет идентификатор стола T_GROUP
с именем GROUP_SEQ
. (Increment by: 1, Min_Value: 1, Max_Value: 999999999999999999999999, Размер кеша: 20, Цикл: Нет, Заказ: Нет).
Said GROUP_SEQ увеличивается на спусковой крючок, когда я ввести новую группу в базу данных:
CREATE OR REPLACE TRIGGER GROUP_TRIGGER2
BEFORE INSERT ON T_GROUP for each row
begin
SELECT GROUP_SEQ.nextval
INTO :new.ID
from dual;
END;
В моем коде, я выполнил addGroup()
функции в своем коде, который успешно добавляет новую группу вместе с правая GROUP_SEQ
значение, однако, когда я пытаюсь получить currval
он терпит неудачу, потому что я не использовал NEXTVAL по себе, и я получаю это исключение:
ORA-08002: sequence GROUP_SEQ.currval is not yet defined in this session
Хотя я и определил его в триггере. Случается так же, если я запускаю те же команды с помощью SQLplus cmd.
Заранее благодарен!
Ты не ослушался Первой заповеди Оракула, которая: «Ты определишь свою схему, или страдаешь вечным проклятием, а на твоей голове падут змеи, лягушки и водолазы Другие рептилии и амфибии - да, даже на твоей голове ОСТАЕТСЯ ТОКАМИ ". Совпадение? Я думаю * НЕ !!!! * :-) –
Вы используете пул соединений в java-сервере? – krokodilko
@krokodilko Я не уверен - я использую aa singleton, чтобы получить одно соединение через 'DriverManager.getConnection()' функцию 'java.sql.DriverManager' после регистрации моего драйвера. Я полагаю, что он использует пул соединений в фоновом режиме, но я не создал пул собственного –