Я пытаюсь преобразовать некоторый Informix ESQL в Oracle Pro * C. В существующем коде Informix для обозначения автоматически увеличивающихся столбцов использовался тип данных «SERIAL». Согласно документации Oracle, Oracle Migration Workbench for 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 в приведенном выше примере.)