如果我在Firebird数据库中创建一个新表,然后调用:
TIBDatabase.GetTableNames,新创建的表没有得到颂扬:我首先发出:
IBDatabase1.Connected := False;
IBDatabase1.Connected := True;
然后我可以调用TIBDatabase.GetTableNames并枚举新创建的表。
以下函数使用TIBDatabase.GetTableNames来确定是否存在作为参数传递的给定表名
function TableExists(const aTableName: String): Boolean;
var
ListOfExistingTables: TStringList;
begin
Result:= False;
ListOfExistingTables:= TStringList.Create;
try
IBDatabase1.GetTableNames(ListOfExistingTables);
Result:= (ListOfExistingTables.IndexOf(aTableName) > - 1);
finally
ListOfExistingTables.Free;
end;
end;
答案 0 :(得分:5)
在Firebird中甚至元数据 - 更改在事务中被隔离。因此,您必须提交已用于创建表的事务。也许您必须提交IBX使用的事务来读取表名。