TUniTransaction bug ?
Posted: Fri 22 Nov 2019 08:38
MariaDB, PostgreSQL :
UniTransaction1.IsolationLevel := ilReadUnCommitted;
try
UniConnection.StartTransaction;
Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'insert into.....';
Query.ExecSQL;
// UniConnection.Commit;
except on E:EUniError do begin
UniConnection.Rollback;
Memo1.Lines.Add(IntToStr(E.ErrorCode));
Memo1.Lines.Add(E.Message);
end;
end;
UniQuery5.Close;
UniQuery5.SQL.Clear;
UniQuery5.SQL.Text := 'select * from TEST00';
UniQuery5.Open;
showmessage(UniQuery5.Fields[0].AsString);
==> ReadUnCommitted has been applied. No problem
SQL Server :
UniTransaction2.IsolationLevel := ilReadUnCommitted;
try
UniConnection.StartTransaction;
Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'insert into.....';
Query.ExecSQL;
// UniConnection.Commit;
except on E:EUniError do begin
UniConnection.Rollback;
Memo1.Lines.Add(IntToStr(E.ErrorCode));
Memo1.Lines.Add(E.Message);
end;
end;
UniQuery5.Close;
UniQuery5.SQL.Clear;
UniQuery5.SQL.Text := 'select * from TEST00';
UniQuery5.Open;
showmessage(UniQuery5.Fields[0].AsString);
==> Showmessage not showing due to lock
UniTransaction1.IsolationLevel := ilReadUnCommitted;
try
UniConnection.StartTransaction;
Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'insert into.....';
Query.ExecSQL;
// UniConnection.Commit;
except on E:EUniError do begin
UniConnection.Rollback;
Memo1.Lines.Add(IntToStr(E.ErrorCode));
Memo1.Lines.Add(E.Message);
end;
end;
UniQuery5.Close;
UniQuery5.SQL.Clear;
UniQuery5.SQL.Text := 'select * from TEST00';
UniQuery5.Open;
showmessage(UniQuery5.Fields[0].AsString);
==> ReadUnCommitted has been applied. No problem
SQL Server :
UniTransaction2.IsolationLevel := ilReadUnCommitted;
try
UniConnection.StartTransaction;
Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'insert into.....';
Query.ExecSQL;
// UniConnection.Commit;
except on E:EUniError do begin
UniConnection.Rollback;
Memo1.Lines.Add(IntToStr(E.ErrorCode));
Memo1.Lines.Add(E.Message);
end;
end;
UniQuery5.Close;
UniQuery5.SQL.Clear;
UniQuery5.SQL.Text := 'select * from TEST00';
UniQuery5.Open;
showmessage(UniQuery5.Fields[0].AsString);
==> Showmessage not showing due to lock