Delphi 检查记录是否已存在的事务

Delphi 检查记录是否已存在的事务,delphi,Delphi,代码在这里。可以,但我就是不知道怎么写 更适合作业的事务(提交、回滚…) 我希望将上述代码包装在事务中,但首先在插入之前进行检查,“dnevnik”表中是否已经存在“datum”和“izmena_id”(不允许重复)。如果有,则使用消息中止操作。我不知道这种检查的SQL。可能是“如果存在” 在SQLite中,设置约束很容易,但Accuracer不知道。有人能帮我把代码写对吗?谢谢大家! 鉴于Accuracer是一个单文件专有数据库,您可能会从其发行商AidAim处获得最佳答案。你试过问他们吗?“

代码在这里。可以,但我就是不知道怎么写 更适合作业的事务(提交、回滚…)

我希望将上述代码包装在事务中,但首先在插入之前进行检查,“dnevnik”表中是否已经存在“datum”和“izmena_id”(不允许重复)。如果有,则使用消息中止操作。我不知道这种检查的SQL。可能是“如果存在”


在SQLite中,设置约束很容易,但Accuracer不知道。有人能帮我把代码写对吗?谢谢大家!

鉴于Accuracer是一个单文件专有数据库,您可能会从其发行商AidAim处获得最佳答案。你试过问他们吗?“在SQLite中设置约束很容易”-Accuracer支持唯一索引以防止插入重复值。如果你想检查
数据的值,izmena_id
是否存在,您只需编写一个select查询。@Remy Lebeau-我似乎无法处理索引,因为该查询插入了多个具有“datum”和“izmena_id”的相同记录。将这些设置为unique只会插入一条记录。Jan-你能给我举个例子吗?“我想…在插入之前检查一下“数据”和“izmena_id”是否已经存在于“dnevnik”表中(不允许重复)”-这正是unique约束的作用。您不需要手动检查。如果您尝试插入具有唯一约束的重复值,则会发生一个可以根据需要处理的错误。由于Accuracer是一个单文件专有数据库,您可能会从其发布者AidAim处获得最佳答案。你试过问他们吗?“在SQLite中设置约束很容易”-Accuracer支持唯一索引以防止插入重复值。如果你想检查
数据的值,izmena_id
是否存在,您只需编写一个select查询。@Remy Lebeau-我似乎无法处理索引,因为该查询插入了多个具有“datum”和“izmena_id”的相同记录。将这些设置为unique只会插入一条记录。Jan-你能给我举个例子吗?“我想…在插入之前检查一下“数据”和“izmena_id”是否已经存在于“dnevnik”表中(不允许重复)”-这正是unique约束的作用。您不需要手动检查。如果尝试插入具有唯一约束的重复值,则会发生错误,您可以根据需要进行处理。
procedure TForm1.cxButton1Click(Sender: TObject);
begin
  with acrquery2 do
  begin
    ACRQuery1.DisableControls;
    SQL.Clear;
    SQL.Add('INSERT INTO dnevnik (datum,izmena_id,opravilo,narejeno,sprememba) SELECT :a1,izmena_id,opravilo,narejeno,sprememba FROM opravila where izmena_id = :a2');
    Params.ParamByName('a1').asdate := cxdateedit1.Date;
    Params.ParamByName('a2').AsInteger := acrtable1.FieldByName('izmena_id').AsInteger;
    ACRQuery2.ExecSQL;
    SQL.Clear;
    SQL.Add('UPDATE OPRAVILA SET NAREJENO=False,sprememba=null');
    ACRQuery2.ExecSQL;
    ACRQuery1.EnableControls;
    ACRQuery1.Refresh;
  end;