تحليل قاعدة بيانات موظفين ورواتب
#47
(20-06-2018, 07:08 PM)أبو معاذ كتب : كيف تقوم بمنع المستخدم من التعديل أو الحذف  لسجل  مشغول من طرف مستخدم آخر.
حاول تغيير طريقة التفكير، إنسى مسالة المنع، قاعدة البيانات هي التي تحدد ذلك
حاول مطالعة ما تجد من توثيق عن Firebird وكيف يعمل خاصة ال
Transaction
(20-06-2018, 07:08 PM)أبو معاذ كتب : كحل أولي ، أضفت حقلا في الجدول الرئيسي اسمه  used من نوع shortint له قيميتن 0 أو 1 ،
فعندما يدخل المستخدم  أبو معاذ للتعديل على الملف رقم 1 ، أقوم بتغيير قيمة  الحقل used من 0 (القيمة الافتراضية) إلى 1 ،
الحل غير ناجع، تابع لماذا
1- أبو معاذ اتصل بالقاعدة ونفذ استعلام مثلا select جدول ما، هنا Transaction تبقى Active يعني لم تقم بCommit او Rollback  (طبعا هنا كلام اخر حول المكون المستخدم في الاتصال فبعض منها فرضا يكون autocommit يعني يستدعي Commit بعد كل عملية )
2- Delphi4Us اتصل بالقاعدة ونفذ استعلام مثلا select لنفس الجدول السابق او جدول اخر وله ايضا Transaction
3- أبو معاذ اتصل بالقاعدة ونفذ استعلام وقالم بتغيير قيمة الحقل used من 0 (القيمة الافتراضية) إلى 1 ومن المفروض يقوم بCommit
حتى هنا الحقل used بالنسبة لDelphi4us لا يزال 0
Delphi4Us يستطيع مشاهدة التغيير فقط في حال الTransaction التي قام بها كانت بعد Commit التعديل لTransaction الاخرى.
هل فهمت حتى الان ؟
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد


الردود في هذا الموضوع
RE: تحليل قاعدة بيانات موظفين ورواتب - بواسطة محمد عبد العزيز - 21-06-2018, 09:09 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم