Я пытаюсь конвертировать некоторые Informix ESQL в Oracle Pro * C. В существующем коде Informix тип данных «SERIAL» использовался для указания автоматически увеличивающихся столбцов. Согласно документации Oracle, Oracle Migration Workbench для Informix должен быть в состоянии справиться с этим и объясняет, что он преобразует тип данных «SERIAL» в «NUMBER» со связанной последовательностью Oracle и триггером. Однако при попытке запустить инструмент просто заменяет слово «SERIAL» на «ERROR (SERIAL)», поэтому я пытался вручную добавить триггер / последовательность.
Их пример здесь: http://docs.oracle.com/html/B16022_01/ch2.htm#sthref112 показывает, как это можно сделать. Последовательность выглядит довольно простой, однако при попытке создать триггер вот так:
CREATE TRIGGER clerk.TR_SEQ_11_1
BEFORE INSERT ON clerk.JOBS FOR EACH ROW
BEGIN
SELECT clerk.SEQ_11_1.nextval INTO :new.JOB_ID FROM dual; END;
Препроцессор Pro * C выбирает здесь ключевое слово "CREATE" и решает, что мне не разрешено использовать переменную хоста ": new.JOB_ID", поскольку переменные хоста нельзя использовать в сочетании с операторами "CREATE" .
У меня вопрос, есть ли способ создать триггер, который связывает последовательность Oracle с конкретным столбцом, не используя переменную хоста для указания имени столбца? Документация Oracle, похоже, указывает на то, что их инструмент миграции должен быть в состоянии справиться, что означает, что должен быть какой-то способ сделать это. Однако все примеры использования триггера, которые я обнаружил, используют переменную хоста, которая заставляет препроцессор жаловаться.
Спасибо, что уделили время.
(Примечание: я использовал имена триггеров / последовательностей / столбцов из примера в документации Oracle в приведенном выше примере.)