#sql #firebird #firebird2.5
#sql #firebird #firebird2.5
Вопрос:
Я пытаюсь создать временную таблицу для сохранения некоторых кодов, но когда я пытаюсь вставить код, он выдает мне следующую ошибку, как если бы таблица не существовала:
не удается отформатировать сообщение 13: 796 — файл сообщения C:Windowsfirebird.msg не найден. Динамическая ошибка SQL. Код ошибки SQL = -204. Таблица неизвестна. ВРЕМЕННЫЕ КОДЫ. В строке 1, столбец 13.
Это строки, которые я пытаюсь запустить:
create global temporary table TEMPCODES
(
codigo varchar(13)
)
on commit delete rows;
insert into TEMPCODES values('20-04422898-0');
Почему он не может найти таблицу, если я создаю ее раньше?
Комментарии:
1. Мне не удалось перевести
Ответ №1:
В Firebird вы не можете использовать объект базы данных в той же транзакции, которая его создала. Вам нужно зафиксировать, прежде чем вы сможете использовать таблицу.
Другими словами, вы должны использовать:
create global temporary table TEMPCODES
(
codigo varchar(13)
)
on commit delete rows;
commit;
insert into TEMPCODES values('20-04422898-0');
Кроме того, важно понимать, что глобальные временные таблицы (GTT) предназначены как постоянные объекты. Идея состоит в том, чтобы создать GTT один раз, а затем использовать его всякий раз, когда вам это нужно. Содержимое GTT отображается только для текущей транзакции ( on commit delete rows
) или для текущего соединения ( on commit preserve rows
). Создание GTT «на лету» не является обычным шаблоном использования для GTT.