با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. transaction در MySQL یک سری عملیات ترتیبی دستکاری پایگاه داده است که به صورت یک واحد یکتا کار می کند، به عبارتی دیگر باید هر یک از فرآیندهای دستکاری داده های دیتابیس به درستی انجام شود تا نتیجه ی کلی و نهایی نیز بدون خطا انجام شود، در غیر این صورت اگر هر یک از این فرآیندهایی که در یک گروه در قالب یک transaction تعریف شده به نتیجه نرسیده و یا با خطا مواجه شود نتیجه ی نهایی نیز با خطا مواجه خواهد بود، در ادامه ی این مبحث شما را بیشتر با ویژگی transaction در MySQL آشنا خواهیم کرد.
در ادامه ی این آموزش با ویژگی transaction در MySQL و انواع آن آشنا خواهید شد.
transaction ها شامل ۴ خصوصیت استاندارد می باشند، که در مخفف ACID خلاصه می شود:
در MySQL وضعیت transaction ها با BEGIN WORK شروع شده و با COMMIT یا ROLLBACK پایان می یابد.
دو کلمه ی کلیدی Commit و Rollback به طور عمده برای Transaction های MySQL استفاده می شود.
شما می توانید رفتار یک transaction را با تنظیم متغیر جلسه به نام AUTOCOMMIT کنترل کنید.
اگر AUTOCOMMIT با مقدار ۱ (به طور پیش فرض) تنظیم شده باشد، پس هر دستور SQL (در یک معامله یا نه) یک Transaction کامل است و وقتی به پایان رسید، به صورت پیش فرض انجام می شود.
وقتیکه AUTOCOMMIT مقدار ۰ داشته باشد (با تنظیم SET AUTOCOMMIT = 0 ) سری بعدی از دستورات مثل یک Transaction عمل می کند و هیچ فعالیتی تا زمانی که دستور COMMIT اجرا نشود، فعال نمی شود.
شما می توانید این Query ها را با استفاده از تابع ()mysql_query در PHP اجرا کنید.
این مجموعه ی رویدادها به زبان برنامه نویسی مورد استفاده بستگی دارد.
شروع transaction با اجرای دستور BEGIN WORK در دستورات SQL است.
اجرای یک یا بیشتر دستورات SQL نظیر SELECT, INSERT, UPDATE یا DELETE.
بررسی کنید که آیا هیچ خطایی وجود ندارد و همه چیز مطابق نیاز شماست.
اگر خطایی وجود داشته باشد، یک دستور ROLLBACK صادر می کند، در غیر این صورت دستور COMMIT را اجرا می کند.
شما نمی توانید مستقیما از transaction استفاده کنید، اما برای exception ها می توانید اینکار را انجام دهید.
با این حال، آنها امن و تضمین شده نیستند. اگر شما قصد استفاده از transaction در MySQL را دارید، باید جدول های خود را به روش خاصی ایجاد کنید.
انواع مختلفی از جداول وجود دارد که از transaction ها پشتیبانی می کنند اما محبوب ترین MyISAM است.
پشتیبانی از جداول MyISAM نیاز به یک پارامتر کامپایل خاص هنگام کامپایل MySQL از منبع دارد.
شما باید MySQL سازگار با جداول MyISAM را داشته باشید، در غیر این صورت باید آن را دانلود نمائید.
اگر MySQL از MyISAM پشتیبانی می کند، به سادگی کافیست تعریف TYPE = MyISAM را به دستور ایجاد جدول اضافه کنید.
برای مثال کد زیر یک جدول MyISAM را ایجاد می کند که tcount_tbl نام دارد :
1 2 3 4 5 6 7 8 9 10 11 12 | root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> create table tcount_tbl -> ( -> tutorial_author varchar(40) NOT NULL, -> tutorial_count INT -> ) TYPE = MyISAM; Query OK, 0 rows affected (0.05 sec) |
همچنین می توانید از جداول GEMINI or BDB نیز استفاده کنید که البته این به نسخه ی نصب MySQL شما بستگی دارد.
اگر می خواهید چنیدن QUERY مختلف را در MySQL در قالب یک فرآیند واحد انجام دهید، استفاده از ویژگی transaction در MySQL به شما توصیه می شود، البته قبل از هر کاری از اینکه نسخه ی MySQL نصب شده ی شما از انواع transaction پشتیبانی می کند اطمینان حاصل کنید.
aljae0719
tnx.its too useful 🙂