안녕하세요
이전 SubQuery 답변 이재식, 구관중님께 감사드립니다.
이번엔 파라독스에서 Transaction 처리를 해야하는데, 에러가 발생합니다.
품목코드 테이블에서 코드변경시 거래내역과 명세발행내역의 코드도
같이 바꿔야 하는 상황입니다.
Error Message: The transaction isolation level must be dirty read form local databases.
코드는 다음과 같습니다.
DM.Database1.StartTransaction;
try
with Query1 do
begin
Close;
SQL.Clear; // 품목코드
SQL.Add('update TAB1 set item_cd = :Parm1 where item_cd = :Parm2');
Params[0].AsString := Edit1.Text;
Params[1].AsString := StaticText1.Caption;
ExecSQL;
Close;
SQL.Clear; // 거래내역
SQL.Add('update TAB2 set item_cd = :Parm1 where item_cd = :Parm2');
Params[0].AsString := Edit1.Text;
Params[1].AsString := StaticText1.Caption;
ExecSQL;
Close;
SQL.Clear; // 명세발행내역
SQL.Add('update TAB3 set item_cd = :Parm1 where item_cd = :Parm2');
Params[0].AsString := Edit1.Text;
Params[1].AsString := StaticText1.Caption;
ExecSQL;
DM.Database1.Commit;
end;
Application.MessageBox(PChar('작업이 완료되었습니다.'), PChar('알림'), MB_ICONINFORMATION or MB_OK);
except
DM.Database1.Rollback;
Application.MessageBox(PChar('작업중 오류가 발생하여 취소되었습니다.'), PChar('오류'), MB_ICONSTOP or MB_OK);
end;