TRANSACTION در SQL

TRANSACTION در SQL

Transaction چیست؟

Transaction بمعنی تراکنش بوده و یک واحد منطقی کار است.

Transaction در واقع مجموعه ای از چند دستور است که یا با هم با موفقیت اجرا می شوند و یا هیچکدام از آنها اجرا نخواهند شد.

 حتما کلمه تراکنش را بارها شنیده‌اید مثلا پولی را انتقال می‌دهید و پیغام می‌دهد که تراکنش با موفقیت انجام شد و یا انجام نشد. عمل‌هایی که انجام می‌دهیم به این شکل است که می‌خواهیم کاری را انجام دهیم و انتظار داریم که به پایان برسد، اما وسط فرآیندهایی که قراراست انجام شود یک اختلال بوجود بیاید. بعضی وقتها ناسازگاری اطلاعات داریم. مثلا شروع می کنیم عمل درج را انجام می‌دهیم، یک رکورد درج می‌کنیم بلافاصله بعد از آن عمل بروزرسانی را انجام می‌دهیم و بلافصله select می‌کنیم. حالا در نظر بگیرید این وسط اتفاقی رخ می‌دهد که نباید باشد. تراکنش یک عملی است که باید تمام شود و اگر وسط فرآیند تراکنش اتفاقی افتاد باید همه وضعیت به وضعیت اولیه برگردد. در تراکنش یا همه عملیات باید انجام شوند یا همه به وضعیت اولیه برگردند. در جریان تراکنش‌ها دو کلمه خیلی مهم داریم: Commit یعنی تایید کردن نهایی و موفقیت آمیز بودن فرآیند، تراکنشی که commit میشود یعنی اینکه تمام افعالش و فرآیندهای درونیش انجام شده است. اما اگر انجام نشود باید rollback شود یعنی باید تمام اتفاقات به وضعیت اولیه برگردد.
اما تراکنشی را موفق میدانیم که دارای 4 تا ویژگی باشد. همه تراکنش‌ها ویژگی‌های ACID را دارند، این کلمه مخفف 4 کلمه زیر می‌باشد:


Atomic: یک تراکنش همه فرآیندهای درونیش یا باید انجام شوند یا هیچ فرآیندی انجام نشود. این ویژگی معیار اولیه تراکنش است. 
Consistent: بعد از انجام تراکنش دیتابیس در وضعیت پایدار باید باقی بماند. 
Isolation: هر تراکنش باید دیتابیس را در یک وضعیت مجزا یا بسته قرار دهد و تراکنش‌های همزمان نباید به یکدیگر اثر گذار باشند. 
Durability: نتایج تراکنش بعد از پایان آن باید به صورت ماندگار باقی بماند. 
اگر تراکنشی دارای این چهار ویژگی بود یک تراکنش درست است در غیر این صورت تراکنش محسوب نمیشود.

کنترل transactions

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

  • COMMIT − برای ذخیره تغییرات استفاده می شود.
  • ROLLBACK − برای بازگرداندن تغییرات مورد استفاده می گردد.
  • SAVEPOINT − ایجاد نقاط درون گروهی transaction در ROLLBACK.
  • SET TRANSACTION − یک نام را در یک transaction قرار می دهد.

دستور کنترل Transactional فقط با دستورهای  INSERT, UPDATE و DELETE استفاده می شود.
این دستورها نمی توانند هنگام ایجاد table ها یا حذف آنها استفاده شوند زیرا این عملیات به طور خودکار در پایگاه داده انجام می شود.
به منظور استفاده از دستور کنترل transactional در MS SQL Server باید transaction را با ‘begin tran’ آغاز کرد.
در غیر این صورت دستور transaction کار نخواهد کرد.

منابع:

https://pvlearn.com/product/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-transactions-%D8%AA%DB%8C-%D8%A7%D8%B3-%DA%A9%DB%8C%D9%88-%D8%A7%D9%84/
 

نویسنده :
مجید پورداود
  • مجید پورداود
  • مهندس نرم افزار و تحلیلگر ارشد سیستم های کامپیوتری تحت وب می باشم. از سال 1395 برنامه نویسی را شروع کردم و به زبان های php (فریم ورک laravel -codeigniter)  و زبان جاوا اسکریپت (فریم ورک express.js-nest.js)  تسلط دارم.  

ثبت دیدگاه جدید

0 دیدگاه

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