如何从 TFDJSONDeltas 获取增量数据集以动态创建服务器端 UpdateSQL 命令
How to get delta dataset from TFDJSONDeltas for creating server side UpdateSQL command dynamically
我正在使用 Delphi DataSnap REST 应用程序进行测试。使用向导,我可以获得在服务器和客户端之间运行应用程序的良好起点。
程序代码显示在这里。
procedure TServerMethodsMain.ApplyDataSetChanges(const ATableName: String;
const ADeltaList: TFDJSONDeltas);
var
LApply: IFDJSONDeltasApplyUpdates;
begin
LApply := TFDJSONDeltasApplyUpdates.Create(ADeltaList);
DataModule1.FDQuery1.UpdateOptions.UpdateTableName := ATableName;
LApply.ApplyUpdates(ATableName, DataModule1.FDQuery1.Command);
if LApply.Errors.Count > 0 then
raise Exception.Create(LApply.Errors.Strings.Text);
end;
现在有一个关于服务器端数据更新的问题:
所有字段值将一起更新,所有 OLDVALUE 将用作识别原始记录的参考。因此,如果另一位用户更改了同一记录中的一个或多个值,客户端应用程序将生成错误。
我想知道如何从 TFDJSONDeltas 获取增量记录。如果是这样,将有可能创建仅具有修改值的更新 SQL。而且,记录只能用primary/key字段来识别。
谢谢。
FireDAC 完全有能力生成您想要的 SQL 更新。它有很多选择!
指定 FDQuery1.UpdateOptions.KeyFields 属性 并将 FDQuery1.UpdateOptions.UpdateMode 保留为默认值 upWhereKeyOnly。
此外,Delphi 附带大量 FireDAC 样本。
我正在使用 Delphi DataSnap REST 应用程序进行测试。使用向导,我可以获得在服务器和客户端之间运行应用程序的良好起点。 程序代码显示在这里。
procedure TServerMethodsMain.ApplyDataSetChanges(const ATableName: String;
const ADeltaList: TFDJSONDeltas);
var
LApply: IFDJSONDeltasApplyUpdates;
begin
LApply := TFDJSONDeltasApplyUpdates.Create(ADeltaList);
DataModule1.FDQuery1.UpdateOptions.UpdateTableName := ATableName;
LApply.ApplyUpdates(ATableName, DataModule1.FDQuery1.Command);
if LApply.Errors.Count > 0 then
raise Exception.Create(LApply.Errors.Strings.Text);
end;
现在有一个关于服务器端数据更新的问题:
所有字段值将一起更新,所有 OLDVALUE 将用作识别原始记录的参考。因此,如果另一位用户更改了同一记录中的一个或多个值,客户端应用程序将生成错误。
我想知道如何从 TFDJSONDeltas 获取增量记录。如果是这样,将有可能创建仅具有修改值的更新 SQL。而且,记录只能用primary/key字段来识别。
谢谢。
FireDAC 完全有能力生成您想要的 SQL 更新。它有很多选择!
指定 FDQuery1.UpdateOptions.KeyFields 属性 并将 FDQuery1.UpdateOptions.UpdateMode 保留为默认值 upWhereKeyOnly。
此外,Delphi 附带大量 FireDAC 样本。