В настоящее время я работаю над модификацией базы данных Firebird v. 1.5.
Структура базы данных будет изменяться при выполнении запросов из приложения delphi с использованием компонентов interbase, проблема, с которой я сталкиваюсь, заключается в том, что мне нужновыполнить много запросов, некоторые из которых включают создание генераторов и обновление значения генератора, проблема в том, что мне нужно добиться этого за как можно меньшее количество запросов, но мне кажется (по крайней мере мне), что это на самом деле невозможно,я пытаюсь сделать следующее:
/* this command creates a generator to be used for table TABLENAME */
CREATE GENERATOR GEN_TABLENAME;
Итак, я создал генератор, теперь мне нужно установить его значение на текущий максимальный идентификатор из таблицы TABLENAME, например:
/* one would expect that the following command would work, well it doesn't */
SET GENERATOR GEN_TABLENAME TO (SELECT MAX(ID) FROM TABLENAME);
Теперь, есть ли обходной путь для этого, или я вынужден:
- создать генератор
- получить обновление max ID
- значение генератора
и повторение процесса для каждой таблицы?
Я также ожидал, что
SELECT
SELECT MAX(ID) AS ID_TABLENAME_1 FROM TABLENAME_1,
...
SELECT MAX(ID) AS ID_TABLENAME_N FROM TABLENAME_N
будет обходным решением для получения максимального идентификатора из каждой таблицыв одной команде, но это не так.