مفهوم تراکنش ها در MySQL

معمولا دستورات در پایگاه داده به صورت مستقل از یکدیگر اجرا میشن , به این معنی که اگه چندتا دستور SQL رو پشت سر هم اجرا کنیم و یکی از این دستورات موفقیت امیز اجرا نشه , دستورات بعدی میتونن با موفقیت اجرا بشن ( شکست در اجرا شدن یک دستور مانع از اجرا شدن دستورات دیگه نمیشه).

اما توی دنیای واقعی ما نیاز داریم تا اگه یکی از دستوراتمون اجرا نشد یا در اجرا شدن اون مشکل به وجود اومد , کار دستورات دیگه رو خنثی کنیم و پایگاه داده خودمون رو به حالت قبل برگردونیم(یا همه یا هیچکدوم) , چرا باید همچین کاری انجام بدیم؟ بیاید یه مثال بزنم براتون 😀

فرض کنید که ما یک سیستم فروش انلاین داریم , کاربر یک مبلغی رو پرداخت میکنه و مبلغ درون پایگاه داده ثبت میشه , بعدش کالا برای کاربر رزرو میشه. در اینجا دو حالت زیر پیش میاد:

  1. اگه مبلغ درون پایگاه داده به درستی ثبت نشه(عمل insert در پایگاه داده با موفقیت انجام نشه) نیاز داریم تا رزو کالا رو انجام ندیم .
  2. اگه مبلغ به درستی توی پایگاه داده ثبت شه اما کالا برای کاربر رزرو نشه نیاز داریم تا کل عملیات رو کنسل کنیم (دیتابیس رو به حالت قبل برگردونیم).

اگه بخوایم عمل برگردوندن دیتابیس به حالت قبل رو خودمون با اجرا کردن دستورات SQL انجام بدیم نیاز داریم تا دست به کار بشیم و چندتا دستور SQL بنویسیم! اما صبر کنید , راه حل مشکل ما تراکنش ها هستند!

تراکنش شامل مجموعه ای از یک یا چند دستور SQL است که به عنوان یک واحد عمل میکنن , هر دستور در این واحد به دستورات دیگه بستگی داره , اگه یک دستور SQL در این واحد با موفقیت اجرا نشه کل آن واحد خنثی میشه!!!! این یعنی اینکه شما یک سری از دستورات SQL خودتون رو به صورت تراکنش تعریف میکنید و اگه یکی از این دستورات با موفقیت اجرا نشه بقیه دستوراتم اجرا نمیشن و تاثیرات آنهایی که اجرا شدن نیز از بین میره!. 😀

سیستم های مدیریت بانک اطلاعاتی رابطه ای مثل اوراکل (Oracle) , اس کیو ال سرور (SQL Server) از مدت ها قبل تراکنش ها رو ساپورت میکردن اما MySQL هم این ویژگی رو اظافه کرده و پشتیبانی میکنه. در آموزش های بعدی نحوه ی استفاده از تراکنش ها در SQL و  PHP رو به شما دوستان عزیز آموزش میدم تا دید شما نسبت به استفاده از MySQL همراه با PHP کلا عوض بشه 😀 (اموزش افزوده شد , اینجا کلیک کنید)

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK
  1. ابراهیم

    سلام
    واقعا ممنونم خیلی کامل و مختصر بود

    lLIKE

می‌خواهید دیدگاهتان را بیان کنید؟