У меня есть соединение DBExpress, подключенное к базе данных Firebird, на котором работает Firebird Embedded. Пока все отлично работает, но происходит что-то очень странное.
У меня есть модуль данных, который содержит соединение и несколько TSimpleDataset
объектов, представляющих разные таблицы. Но когда я пытаюсь добавить новую таблицу, она, кажется, работает, но затем терпит неудачу:
procedure Update(module: TdmDatabase);
const
SQL = 'CREATE TABLE NEW_TABLE (blah blah blah)';
SQL2 = 'ALTER TABLE NEW_TABLE ADD CONSTRAINT PK_NEW_TABLE PRIMARY KEY (blah)';
SQL3 = 'DROP TABLE NEW_TABLE';
begin
module.connection.ExecuteDirect(SQL); //succeeds
module.connection.ExecuteDirect(SQL2); //succeeds
try
module.New_TableDataset.Active := true; //fails
except
module.connection.ExecuteDirect(SQL3); //succeeds
raise;
end;
end;
Когда я пытаюсь создать таблицу, она, кажется, работает, и я могу ALTER
и DROP
это нормально, но когда я пытаюсь открыть набор данных, который запускает SELECT
, я получаю Ошибка «неверное имя таблицы». Если я запускаю его в отладчике и убиваю программу сразу после выполнения оператора CREATE TABLE
, то проверяю базу данных, новой таблицы там нет.
Кто-нибудь знает, что может вызвать это, и как я могу это исправить?