我有一个连接到 Firebird 数据库的 DBExpress 连接,运行 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
语句运行后立即终止程序,然后检查数据库,新表不存在。
有谁知道是什么原因造成的,我该如何解决?