پس از آنکه با مفهوم تراکنشها در قسمت قبلی این آموزش آشنا شدیم در این قسمت به بررسی چرخه حیات تراکنشها در MySQL بپردازیم. با ما در الفبایت همراه باشید.
اگر قسمت اول تراکنشها را نخواندهاید ابتدا قسمت اول آن را به منظور درک بهتر مفاهیم از اینجا مطالعه کنید.
چرخه حیات تراکنش:
همانطور که در قسمت قبل گفتیم تنها جداول نوع InnoDB و DBD از تراکنش پشتیبانی میکنند، پس توجه داشته باشید نوع جدولها را حتما تعیین کنید.
آغاز تراکنش:
برای شروع تراکنش و در نظر گرفتن کل دستورات به عنوان یک واحد از دستور زیر استفاده می شود:
[crayon-662d12f30748d954751727/]
به جای دستور start transaction میتوان از دستورات begin یا begin work نیز استفاده کرد.
دستورات بعد از start transaction، دستورات تراکنش خواهند بود تا زمانی که فرمان نهاییکردن وارد کنیم. این فرمان نهاییکردن ممکن است بازگشت یا تاییدکردن دستورات باشد.
نهایی کردن یا بازگشت تراکنش:
پس از آن که دستورات SQL را وارد کردید ۲ حالت پیش رو دارید:
- ذخیرهکردن تغییرات: با دستور commit میتوان اتفاقات افتاده را ثبت نهایی کرد تا در دیتابیس ذخیره شوند.
- خنثیکردن تغییرات: با دستور rollback میتوان تغییرات را به حالت قبل از start transaction باز گردادند.
نکته: برخی دستورات را نمیتوان در بین تراکنش اجرا کرد. اگر استفاده شوند تراکنش با ابتدا با دستور commit متوقف میشود و بعد دستور شما اجرا خواهد شد. این دستورات عبارتند از:
- drop database / drop table
- create index / drop index
- alter table / rename table
- unlock table / lock table
- set autocommit=1
حال باید چندین جدول بسازیم تا بتوانیم مفاهیم و مثالهای خود را در آن اجرا کنیم.
دستور زیر را اجرا کنید تا جدول employees از نوع InnoDB ایجاد شود:
[crayon-662d12f307497643781722/]
دستور زیر را اجرا کنید تا جدول departments ایجاد شود:
[crayon-662d12f3074a4358020236/]
دستور زیر را اجرا کنید تا جدول payroll ساخته شود:
[crayon-662d12f3074a7318216995/]
مثال: بررسی تراکنش اضافهکردن کارمند به یک شرکت:
- مراحل:
- افزودن رکورد کارمند به بانک اطلاعاتی
- تعیین اداره محل خدمت کارمند
- تعیین ساختار حقوق و مزایا برای کارمند
- دستورات:
حال میتوانید تغییرات را نهایی از به حالت قبل بازگردانید.
اگر اطلاعات وارد شده صحیح نمیباشد دستور rollback و در غیر این صورت commit را وارد کنید. برای مثال اگر از rollback استفاده کنید و با دستور select مقادیر را از پایگاه داده بازیابی کنید مشاهده خواهید کرد که اطلاعاتی در جدول موجود نیست.
خب در اینجا به پایان قسمت دوم از آموزش تراکنشها در MySQL میرسیم.
لطفا نظرها و دیدگاههای خود را برای افزایش کیفیت پستهای بعدی با ما در میان بگذارید.
با ما در الفبایت همراه باشید…
منبع: سایت MySQL بخش مستندات