السلام عليكم.
من فضلكم عندي اسائلة بخصوص ال Transaction باستعمال Firebird و Firedac.
أود أن أعرف كيفية اتستعمال ال Transaction و هل كل ما أقوم بتعديل (Insert , Update , delete) أقوم باستدعاء ال Transaction ؟
مع ال FdTable أو FdQuery.
في الختام هل ممكن مثال ولو بسيط حول هذا الموضوع.
و بارك الله فيكم.
وعليكم السلام ورحمة الله
حقيقة ان كل عملية تتم على الفايربيرد هي تتم بداخل ترانسكشن
واستخدم هذه الطريقة اذا كان لديك اكثر من عملية مرتبطة ببعضها اما ماعداها فليس لها ضرورة
يعني عملية اضافة تتبعها عملية حذف مثلا ولابد ان تتم معا او تفشلا معا
اليك مثال عملي لعمليتين
كود :
FDConnection1.StartTransaction;
try
FDQuery1.ExecSQL;
....
FDQuery1.ExecSQL;
FDConnection1.Commit;
except
FDConnection1.Rollback;
raise;
end;
العمليات المتداخلة
كود :
// start new transaction
FDConnection1.StartTransaction;
try
FDQuery1.ExecSQL;
....
// set savepoint
FDConnection1.StartTransaction;
try
FDQuery1.ExecSQL;
....
// release savepoint
FDConnection1.Commit;
except
// rollback to savepoint
FDConnection1.Rollback;
raise;
end;
// commit transaction
FDConnection1.Commit;
except
// rollback transaction
FDConnection1.Rollback;
raise;
end;
جميل جدا ،
بارك الله فيك.
1- ما هو دور
2- بالنسبةل Transaction المتداخلة ، هل الأفضل استعمال 2 FDTransaction او الاكتفاء بواحدة.
3- هل هي نفس الطريقة التي يجب استعمالها في FdTable ؟
جزاك الله خيرا.
ان raise تيتخدم لرفع استثناء والقيام بعملية ما استدعاء دالة او اظهار رسالة او اي امر ولاحظ انها موجودة في الحاوية التي سيتم تنفيذها عند حدوث اسثناء
بشكلها هذا هي حقيقة لا تفعل اي شئ ولكن امثلة على الاستخدام :
كود :
try
except
raise EOtherError.Create('My Message');
end;
كود :
procedure MyHandleException(AException: Exception);
begin
ShowMessage(AException.Message);
AcquireExceptionObject;
raise AException;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
raise Exception.Create('Bum');
except
on E: Exception do
MyHandleException(E);
end;
end;
كود :
uses
SysUtils;
procedure RaiseMyException;
begin
raise Exception.Create('Hallo World!');
end;
التداخل فقط لاعطيك فكرة ان ذلك ممكن فيتم تنفيد عمليات والغاء اخرى حسب التركيبة المستخدمة
ويمكنك الاكتفاء بواحد فقط بالتأكيد يحتوي العديد من العمليات اضافة تعديل حذف وغيره .
واجل ماتسخدمه مع مكون Table هو نفسه مع Query