В моем триггере есть две вставки, которые запускаются обновлением. Моя таблица Vendor_Hist имеет поле с именем thID, которое является первичным ключом в таблице Task_History. thID получает свое значение из mySeq.nextval.
INSERT INTO TASK_HISTORY
( thID, phId, LABOR, VERSION )
( select mySeq.NEXTVAL, mySeq2.CurrVal, LABOR, tmpVersion
from tasks t
where t.project_id = :new.project_ID );
select mySeq.currval into tmpTHID from dual; -- problem here!
INSERT INTO VENDOR_HIST
( vhID, thID, Amount, Position, version )
( select mySeq3.NEXTVAL, tmpTHID,
Amount, Position, tmpVersion
from vendors v2, tasks t2
where v2.myID = t2.myID
and t2.project_id = :new.project_ID );
Теперь моя проблема в том, что tmpTHID всегда является последним значением mySeq.nextVal. Итак, если thID в task_history равен 1,2,3, я получаю три вставки в таблицу vendor_hist с 3,3,3. Это должно быть 1,2,3. Я тоже пробовал
INSERT INTO TASK_HISTORY
( thID, phId, LABOR, VERSION )
( select mySeq.NEXTVAL, mySe2.CurrVal, LABOR, tmpVersion
from tasks t
where t.project_id = :new.project_ID ) returning thID into :tmpTHID;
но затем я получаю сообщение "предупреждение скомпилировано с ошибками", когда я запускаю триггер. Как мне убедиться, что thID в первой вставке также одинаков во второй вставке?
Надеюсь, это имеет смысл.