دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۳
  • آذر

جلسه ۳۸ : transaction در SQLite

  • دسته‌بندی‌ها :
جلسه ۳۸ : transaction در SQLite
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. transaction در SQLite یک سری عملیات ترتیبی دستکاری پایگاه داده است که به صورت یک واحد یکتا کار می کند، به عبارتی دیگر باید هر یک از فرآیندهای دستکاری داده های دیتابیس به درستی انجام شود تا نتیجه ی کلی و نهایی نیز بدون خطا انجام شود، در غیر این صورت اگر هر یک از این فرآیندهایی که در یک گروه در قالب یک transaction تعریف شده به نتیجه نرسیده و یا با خطا مواجه شود نتیجه ی نهایی نیز با خطا مواجه خواهد بود، در ادامه ی این مبحث شما را بیشتر با ویژگی transaction در SQLite آشنا خواهیم کرد.

      آشنایی با transaction در SQLite

      در ادامه ی این آموزش با ویژگی transaction در SQLite و انواع آن آشنا خواهید شد.

      خصوصیات یک ویژگی transaction در SQLite

      transaction ها شامل ۴ خصوصیت استاندارد می باشند، که در مخفف ACID خلاصه می شود:

      • Atomicity : این تضمین می کند که تمام عملیات در واحد کار با موفقیت انجام شده است، در غیر این صورت خطا رخ می دهد.
      • Consistency : این تضمین می کند که وضعیت دیتابیس به درستی طی این عملیات دستکاری تغییر کرده می کند.
      • Isolation : این transaction ها را قادر می سازد تا به صورت مستقل از یکدیگر عمل کنند.
      • Durability : این اطمینان حاصل می کند که نتیجه یک transaction مهم در صورت خرابی سیستم ادامه می یابد.

      کنترل transaction

      دستورات زیر برای کنترل transaction ها استفاده می شوند :

      • BEGIN TRANSACTION یک transaction را شروع می کند.
      • COMMIT − برای ذخیره ی تغییرات استفاده می شود، البته می توانید از END TRANSACTION نیز استفاده کنید..
      • ROLLBACK − تغییرات را به عقب برمی گرداند.

      دستورات کنترل Transactional فقط با دستورات DML نظیر INSERT, UPDATE و DELETE بکار می روند.

      این دستورات نمی توانند هنگام ایجاد جداول یا حذف آنها استفاده شوند زیرا این عملیات به طور خودکار در پایگاه داده انجام می شود.

      دستور BEGIN TRANSACTION

      Transaction ها را می توان با دستور BEGIN TRANSACTION و یا ساده تر آن BEGIN شروع کرد.

      چنین Transaction ها معمولا تا زمانی که دستور COMMIT یا ROLLBACK بعدی رخ می دهد باقی می ماند.

      با این وجود در صورت بسته بودن دیتابیس و یا رخ دادن خطا، transaction برمی گردد.

      سینتکس اصلی شروع یک transaction در SQLite به صورت زیر است :

      مثال : 

      دستور COMMIT

      COMMIT نیز یک دستور transactional است که برای ذخیره ی تغییرات انجام شده توسط transaction در یک دیتابیس بکار می رود.

      دستور COMMIT تمام transaction ها را از آخرین دستور COMMIT یا ROLLBACK در دیتابیس ذخیره می کند.

      سینتکس اصلی دستور COMMIT در SQLite به صورت زیر است :

      مثال : 

      دستور ROLLBACK

      یکی دیگر از دستورات transactional دستور ROLLBACK است که برای بازگرداندن transaction هایی که به هر دلیلی به طور کامل در دیتابیس ذخیره نشده اند، استفاده می شود.

      ROLLBACK تغییرات transaction ها را فقط از آخرین دستور COMMIT یا ROLLBACK اجرا شده در دیتابیس باز می گرداند.

      سینتکس اصلی دستور ROLLBACK در دیتابیس به صورت زیر است :

      مثال : 

      مثال

      جدول COMPANY را با رکوردهای زیر در نظر بگیرید:

      مثال : 

      حالا ما یک transaction را شروع می کنیم که در آن، تمام رکوردهایی را که فیلد age آن ها برابر با ۲۵ باشد را از جدول COMPANY حذف می کند.

      سپس با استفاده از دستور ROLLBACK تغییرات انجام شده را بازمی گردانیم.

      مثال : 

      حالا اگر جدول COMPANY را چک کنید، هنوز هم همان رکوردهای قبلی را خواهیم داشت :

      مثال : 

      یک transaction دیگر را شروع کرده و طی آن  تمام رکوردهایی را که فیلد age آن ها برابر با ۲۵ باشد را از جدول COMPANY حذف می کنیم.

      سپس با استفاده از دستور COMMIT تغییرات انجام شده را در دیتابیس ذخیره می کنیم:

      مثال : 

      حالا اگر جدول COMPANY را بررسی کنید، رکوردهای زیر را مشاهده خواهید کرد :

      مثال : 

      کلام آخر

      اگر می خواهید QUERY ها را در SQLite در قالب یک فرآیند واحد انجام داده و تغییرات را ذخیره یا بازگردانید، استفاده از ویژگی transaction در SQLite به شما توصیه می شود، البته قبل از هر کاری از اینکه نسخه ی SQLite نصب شده ی شما از انواع transaction پشتیبانی می کند اطمینان حاصل کنید.

      QR:  جلسه ۳۸ : transaction در SQLite
      به اشتراک بگذارید