تعداد بازدید: 119

تراکنش ها یا transaction در MySQL Engine

یکی از مباحث پیشرفته تر در MySQL Engine تراکنش ها (transaction) می باشد. این ها امکاناتی هستند که موتور MySQL یا MongoDB در اختیار ما قرار می دهد.

تراکنش ها – Transaction

زمانی که یک کوئری از چند قسمت وابسته و مجزا تشکیل شده است. به طور مثال کوئری خرید یک محصول از کم شدن اعتبار از خریدار و اضافه شدن به حساب فروشگاه تشکیل شده است. بدین ترتیب اگر در اجرای هر کدام از دو قسمت مشکلی بوجود بیاید در منطق کوئری اصلی مشکلی بوجود آمده و نا معتبر است.

برای این که این دو کوئری را وابسته به هم کنیم باید هر دو را در یک تراکنش قرار دهیم که در پایان با هم اجرا شوند . (START TRANSACTION, COMMIT, ROLLBACK).

syntax های زیر کنترل های transaction می باشد :

  • START TRANSACTION or BEGIN به معنی شروع یک تراکنش است.
  • COMMIT تایید تراکنش جاری ، اجرای دائمی کوئری ها.
  • ROLLBACK عدم اجرای تراکنش جاری ، لغو کوئری ها ( تغییرات) .

در MySQL تمامی دستورات پس از اجرا به صورت خودکار تایید و اجرا می شوند ، اما در صورتی که متغیر autocommit را برابر با 0 قرار دهیم تایید دستورات با COMMIT قطعی می شوند.

نکته : اگر از START TRANSACTION استفاده کنیم تنها یک بار از COMMIT , ROLLBACK می توانیم استفاده کنیم اما اگر از SET autocommit استفاده کنیم به هر تعداد دستور می توانیم از COMMIT , ROLLBACK استفاده کنیم.

نکته : مقدار این متغیر پس از قطع اتصال از MySQL به صورت خودکار برابر 1 می شود.

نقطه بازگشت یا SAVEPOINT یک نشانه در تراکنش کوئری ما می باشد که در صورت نیاز می توان به آن نقطه بازگشت ( ROLLBACK TO ) انجام داد. دقت داشته باشید این عملگر در تراکنش ها کاربرد دارد.

PHP + MySQL transactions

با استفاده از کلاس PDO و یا رابط کاربری mysqli می توانیم از transaction ها در PHP , MySQL استفاده کنیم. مثال زیر $db یک PDO Handler می باشد که متد های آن طی یک مثال توضیح داده شده است.

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

نکته : از تراکنش ها در محیط های تست (UNIT TEST) نیز برای تست رابط های پایگاه داده در نرم افزار استفاده می شود.

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای تراکنش ها یا transaction در MySQL Engine

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *