|
var
lNewTableDef: TBizTableDef;
begin
lNewTableDef := TBizTabledef.Create(BizSys.GlobalContext);
try
lNewTableDef.FieldDefs.Assign(FBizTableDef.FieldDefs);
lNewTableDef.IndexDefs.Assign(FBizTableDef.IndexDefs);
lNewTableDef.ForeignKeyDefs.Assign(FBizTableDef.ForeignKeyDefs);
lNewTableDef.ID := FBizTableDef.ID+'_TEMP';
CreateEmptyPhyTable(lNewTableDef);
finally
lNewTableDef.Free;
end;
procedure TPhyTableGenerator.CreateEmptyPhyTable(ABizTableDef: TBizTableDef);
var
lTableDefSchemaTable: TTableDefSchemaTable;
lTableBuilder: TTableBuilder;
begin
lTableBuilder := TTableBuilder.Create;
lTableDefSchemaTable := TTableDefSchemaTable.Create(ABizTableDef,
BizSchemaTypes.cDriver_ORACLE);
try
lTableBuilder.CreateTable(nil, FConnection, lTableDefSchemaTable, Business.Model.TCreateMode.cmtCreate,
false, True, -1);
finally
lTableDefSchemaTable.Free;
lTableBuilder.Free;
end;
end;
这样创建,没有异常错误,表也未创建成功,有别的什么好办法没,注意(数据字典和实际物理表结构不一致,所以不能使用物理表来拷贝结构) |
|