
همانطور که در قسمتهای قبلی گفتیم جدولهای تراکنشی که InnoDB و BDB هستند که از خواص ACID پشتیبانی میکند با توجه به آنکه نوع جدول MyISAM از سرعت بالایی برخوردار است و از تراکنش پشتیبانی نمیکند، MYSQL به ما اجازه میدهد با قفل کردن جدولها تراکنشها را شبیهسازی کنیم. باماهمراه باشید.
اگر قسمت اول تراکنشها را نخواندهاید ابتدا قسمت اول را به منظور درک بهتر مفاهیم از اینجا مطالعه کنید.
اگر قسمت دوم تراکنشها را نخواندهاید ابتدا قسمت دوم را به منظور درک بهتر مفاهیم از اینجا مطالعه کنید.
با توجه به آنکه قسمت اول مفاهیم اصلی تراکنشهاست حتما آن را مطالعه کنید.

قفل کردن جدول:
با توجه به آن که نباید در زمان تراکنش در کارآیی اخلالی ایجاد شود باید قفل نوع نوشتن را روی جدول ایجاد کرد تا بقیه کاربران MySQL نتوانند از روی جدول اطلاعات غیر واقعی بخوانند. برای این کار باید به شکل زیر عمل کرد.
۱ | Lock table tname write; |
توجه: در آخر توجه داشته باشید که پس از اتمام دستورات تراکنش باید قفل جدول را باز کنید. برای این کار از دستور زیر به شکل زیر باید استفاده کرد:
۱ | Unlock tables; |
شبیهسازی تراکنش در جدول MyISAM:
مثل: شبیهسازی تراکنش روی جدولهای employees و departments و payroll.
برای این کار ابتدا نوع جدول ها را به MyISAM باید تغییر داد. برای این کار باید از دستور alter table به شکل زیر استفاده کرد:
۱ ۲ ۳ ۴ ۵ | Alter table employees engine myisam; Alter table departments engine myisam; Alter table payroll engine myisam; |
حال باید جدولها را قفل کرد تا اطلاعات غیر واقعی از جدولها خوانده نشود:
۱ ۲ ۳ ۴ ۵ | Lock table employees write; Lock table departments write; Lock table payroll write; |
حال باید دستورات زیر را اجرا کرد تا به جدول رکوردهایی اضافه شود:
۱ ۲ ۳ ۴ ۵ | Insert into employees (ename) values ('salmani'); Insert into departments (eid,dept) values (last_insert_id(),programmer); Insert into payroll (eid,pbasic,pbonus) values (last_insert_id(),۳۰۰۰۰,۳۰۰۰); |
حالا اگر خواستید میتوانید خطوط ایجاد شده را پاک کنید که معادل عمل rollback است سپس با دستور unlock table; جدول را آزاد کنید و یا بدون پاک کردن دستورات قفل جدول را باز کنید که معادل عمل commit می باشد.
به پایان دوره آموزش تراکنشها رسیدیم.
لطفا نظرها و دیدگاههای خود را برای افزایش کیفیت پستهای بعدی با ما در میان بگذارید.
با ما در الفبایت همراه باشید…
منبع: سایت MySQL بخش مستندات