تفاوت بین autocommit و begin transaction برای شروع تراکنش ها

در اموزش های قبلی آموزش دادم که تراکنش چیه و چجوری میشه از طریق PHP از یک تراکنش رو شروع کرد و استفاده کرد. اما تنها نکته ای که جا انداختم تفاوت autocommit و begin transaction است. در اینجا به بررسی تفاوت بین autocommit و begin transaction می پردازیم. 😀 برووووووو بریم

هر دستور SQL به تنهایی یک تراکنش است , تراکنشی که به صورت اتوماتیک تایید و تاثیرات ان به صورت اتوماتیک ثبت می شود. می توان این حالت اتومات بودن ثبت تغییرات برای دستورات رو با استفاده از autocommit و دادن مقدار False یا ۰ به اون غیر فعال کرد. وقتی که اوتوکامیت (Autocommit) رو غیر فعال میکنیم و یک دستور SQL رو اجرا میکنیم تا موقعی که اتصال با پایگاه داده برقرار است فرصت داریم تا توسط دستور commit تغییرات رو ثبت و تایید کنیم در غیر این صورت در پایان اتصال با پایگاه داده دستور rollback اجرا می شود و تغییرات همه از بین میره! (مگر از دستورات خاص مثل Drop استفاده کرده باشیم).

پس در حالتی که ما Autocommit رو برای شبیه سازی تراکنش دستکاری میکنیم هر دستور به عنوان یک تراکنش منحصر به فرد در نظر گرفته میشه! اما در حالتی که begin transaction رو استفاده میکنیم و تراکنش رو شروع میکنیم مجموعه دستوراتی که بعد از ان قرار میگیرند همه به صورت یک تراکنش واحد در نظر گرفته میشن! مثلا اگه ما ۵ تا دستور insert داشت باشیم همه در قالب یک تراکنش واحد قرار میگیرن , در انتها نیز باید دستور commit اجرا بشه , در غیر این صورت در انتهای اتصال rollback اجرا میشه!

امیدوارم این اموزش مفهوم و تفاوت بین begin transaction و autocommit رو نشون داده باشه , به صورت کلی در هنگام کاربرد تفاوت خاصی بین اونها وجود نداره 😀 پس ذهن خودتون رو درگیر تفاوت در نحوه ی کاربرد نکنید.

به اشتراک بگذارید: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

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