Я не могу запускать вставки в firebird 2.5, таблица неизвестна

#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.