代码在这里。工作正常,但我只是不知道如何写 一个更适合作业的事务(提交,回滚......)。
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;
我想将上面的代码包装在一个事务中,但是在插入之前先进行检查,如果" datum"和" izmena_id"已经存在于" dnevnik"表(不允许重复)。如果是,则通过消息中止操作。我不知道SQL这样的检查。可能'如果存在' ...
在SQLite中,设置约束很容易,但不了解Accuracer。有人可以帮我写这段代码吗?谢谢!