تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ربط مهمة بأخرى
#6
توجد طريقتين :



الطريقة الأولى : ( التحكم يكون من داخل البرنامج ) بواسطة التحقق من مخرجات جمل الإستعلام

المفروض أن تكون جملة الإستعلام ( جملة الحذف من قاعدة البيانات ) تقوم بإرجاع رقم
هذا الرقم هو عدد السجلات المحذوفة ( سواءاً قمت بحذف سجل واحد أو أكثر من سجل )
داخل الكود تستخدم هذا الرقم : إذا كان أكبر من صفر ( 0 ) تنفذ الأمر الثاني : إذا كان أصغر من أو يساوي صفر ( 0 ) إذن لم يحدث شيء على قاعدة البيانات إذن لا تنفذ الأمر الثاني











الطريقة الثانية : ( التحكم يكون من داخل قاعدة البيانات ) بواسطة الـ ( Transaction 



تعريف الـ Transaction  :
ترجمتها بالعربي تعني ( معاملة ) 
المعاملات هي مفهوم أساسي لقواعد البيانات العلائقية. 
إذن  المعاملات مفهومها الأساسي هو جمع ( عمليات متعددة أو إجراءات متعددة ) تنفذ في قاعدة بيانات , هدفها هو جمع كل هذة الإجراءات معاً لتصبح وحدة عمل واحدة.
هذه الوحدة من العمل ( تحتوي على أجراءات كثيرة مثلاً ) يمكن أن تنجح أو تفشل ككل.
إذا نجحت : يتم الالتزام والتثبيت والإعتماد بجميع التغييرات داخل هذة المعاملة وجعلها دائمة.
إذا فشل ( أي جزء / والقصد أي إجراء ) داخل هذة المعاملة ( وقمت بإستدعاء أمر التراجع عن التغييرات ) فستكون جميع البيانات كما كانت قبل المعاملة. وكأن شيءً لم يكن. بمعنى المعاملة ملغية بالكامل بجميع إجراءاتها.


مثال على  الـ Transaction :
تريد تنفيذ عدة إجراءات على قاعدة البيانات , مثلاً : أريد حذف بيانات موظف من كامل قاعدة البيانات
هذا الموظف له سجل رئيسي في جدول , وبيانات الدخول والخروج في جدول مختلف , وأي وثائق أو صور في جدول آخر , والبيانات المالية في جدول آخر , وله بيانات أخرى في جدول الصلاحيات , 
بمعنى آخر له بيانات منتشرة في جداول كثيرة.
الآن عند تنفيذ أمر الحذف على هذا الموظف ( هذا يعتبر إجراء )
وكل عملية تتم على أي جدول يعتبر ( إجراء )
سينتج عن هذا الأمر إجراءات كثيرة , وتريد تنفيذها بشكل منطقي ومتسلسل , 

الأن :

بدون إستخدام  الـ Transaction   :
الإجراء الذي ينجح سيعتمد , والإجراء الذي يفشل لن يعتمد
سينتج عن هذة الحالة , خرق لمبداء تكامل البيانات ( في حال فشل أحد الإجراءات )
مثلاُ بيانات الموظف الأساسية تم حذفها من جدول الموظفين , ولكن لا تزال هناك بيانات تخص هذا الموظف في جداول أخرى.


مع إستخدام  الـ Transaction   :
يجب أن تنجح جميع الإجراءات حتى يتم إعتماد كامل التغييرات  ,  لكن بشرط ::::::: بإستدعاء أمر الإعتماد (      ()Transaction.Commit      )
أي إجراء يفشل يعني فشل العملية بالكامل ( بجميع إجراءاتها ) , لكن بشرط ::::::: بإستدعاء أمر التراجع  (      ()Transaction.Rollback      )
















1 -
بإمكانك إنشاء الـ Transaction داخل البرنامج ( بلغة الـ VB.NET )
كود :
       Dim transaction As SqlTransaction

       transaction = connection.BeginTransaction()
طريقة إستخدام  الـ Transaction
يجب على كل command أن يأخذ نفس الـ connection الذي تم إنشاء ا الـ Transaction منه
يجب على كل command أن يأخذ نفس الـ Transaction الذي تم إنشائة

بمعنى 
connection واحد
Transaction واحد

وكل أمر ( command )  يجب أن يعتمد هذين المتغيرن
Dim command As SqlCommand
command.Connection = connection
command.Transaction = transaction

نفذ كل الإجراءات داخل جملة Try
لاحظ الكود والجملتين ( Try / Catch )
كود :
Try
' Try هنا يعتبر داخل الجملة
Catch ex As Exception
' Catch هنا يعتبر داخل الجملة
End Try


بعد الإنتهاء من تنفيذ كل الأوامر 
قم بإستدعاء أمر الإعتماد
transaction.Commit()
في نهاية الجملة Try

داخل الجملة Catch 
نفذ أمر التراجع
transaction.Rollback()








2 -
أو كتابت  الـ Transaction داخل قاعدة البيانات بإستخدام الإجراءات المخزنة  ( بلغة الـ  SQL )
كود :
BEGIN TRANSACTION
-- TRANSACTION نحن الأن داخل نطاق الـ

    BEGIN TRY
        -- Try بداية الجملة

        -- تنفيذ الأمر الأول
        INSERT INTO [Test].[dbo].[T1] ([Title], [AVG]) VALUES ('Tidd130', 130), ('Tidd230', 230)

        -- تنفيذ الأمر الثاني
        UPDATE [Test].[dbo].[T1] SET [Title] = N'az2' ,[AVG] = 1
        WHERE [dbo].[T1].[Title] = N'az'

        -- إستدعاء أمر الإعتماد
        COMMIT TRANSACTION

    END TRY
    BEGIN CATCH
    -- CATCH داخل الجملة
        ROLLBACK TRANSACTION
    END CATCH  

GO









فيما يخص قواعد البيانات , وإذا كانت لديك إجراءات عدة وتريد تنفيذها , إذن ( الطريقة الثانية الـ Transaction )
الرد }}}


الردود في هذا الموضوع
ربط مهمة بأخرى - بواسطة محمد ابوخليل - 10-04-18, 04:49 PM
RE: ربط مهمة بأخرى - بواسطة محمد كريّم - 10-04-18, 09:40 PM
RE: ربط مهمة بأخرى - بواسطة محمد ابوخليل - 11-04-18, 08:55 AM
RE: ربط مهمة بأخرى - بواسطة محمد ابوخليل - 12-04-18, 09:17 AM
RE: ربط مهمة بأخرى - بواسطة عبدالله الدوسري - 12-04-18, 02:01 PM
RE: ربط مهمة بأخرى - بواسطة محمد ابوخليل - 12-04-18, 05:19 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Photo [نقاش] استفسارات مهمة فى الشبكات mmaalmesry 0 915 14-01-21, 10:25 AM
آخر رد: mmaalmesry
  [سؤال] كيف أربط Combobox بأخرى والوسيط قاعدة البيانات ؟؟؟ princelovelorn 0 1,650 05-05-18, 07:48 PM
آخر رد: princelovelorn
  ما هذه الملفات وهل هي مهمة ali.alfoly 7 4,172 23-04-14, 09:47 PM
آخر رد: ali.alfoly

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


يقوم بقرائة الموضوع: