Я использую массовый импорт для моей базы данных Firebird, что может создавать проблемы с генераторами, поскольку они не обязательно обновляются.Обновление генератора в триггере в firebird
Вопрос в том, есть ли способ обновить значение генератора непосредственно в триггере?
Я попробовал следующее:
begin
if (new.ID is null) then
begin
new.ID = GEN_ID(mygenerator, 1);
end
else if (new.ID > GEN_ID(mygenerator, 0)) then
begin
GEN_ID(mygenerator, new.ID - GEN(ID_mygenerator));
end
end
Я также попытался ALTER SEQUENCE
или SET GENERATOR
заявления, но ни один не кажется, принято в триггере ...
Любое предложение? ПРИМЕЧАНИЕ: Я использую Firebird 2.5.4
Генератор находится вне контроля транзакции, поэтому прямое значение параметра нецелесообразно, так как это может привести к сбросу генератора к уже выданному значению. Я бы ожидал, что триггер, как показано в вашем вопросе, будет работать (хотя, возможно, вам нужно присвоить результат «GEN_ID» локальной переменной). –