چطوری یکسری از دستورات sql رو تنظیم کنیم که حتما انجام شوند یا اصلا انجام نشوند

یکی از موضوعاتی که هر برنامه نویس باید در پیاده سازی پروژه ی که بحث مالی داره و یا اینکه مجموعه دستورات sql پشت سر هم که حتما باید انجام شوند و در صورت بروز مشکل در یکی از دستورات سایر دستورات انجام شده نیز نباید بی اثر شوند، که تحت عنوان تراکنش(Transaction) یا اسید نیز گفته میشه. رو باید در نظر بگیره، این مثال رو در نظر بگیرید:

حساب بانکی شخصی، از نوع حساب جاری که دارای دسته چک است را در نظر می گیریم
موجودی فعلی: ۲٫۰۰۰٫۰۰۰ ریال
چک به تاریخ امروز: ۱٫۰۰۰٫۰۰۰ ریال
مبلغ کل یک فاکتور فرضی: ۱٫۰۰۰٫۰۰۰ ریال
کارمزد کارت به کارت بانکی: ۷٫۰۰۰ ریال
در نظر بگیرید این شخص رفته جلوی عابر بانک و می خواهد مبلغ فاکتور را بصورت کارت به کارت پرداخت کند، فرآیند تکمیل شده و به مرحله آخر رسیده:
“در صورت صحت اطلاعات دکمه تایید را فشار دهید”
همون موقع هم چک روز به مبلغ ۱٫۰۰۰٫۰۰۰ ریال داخل شعبه در حال نقد شدن است و به باجه صندوق رسیده

حالات ممکن:
اگر صندوقدار زودتر دکمه تسویه رو بزنه:
چک پاس میشه و موجودی حساب میشه: ۱٫۰۰۰٫۰۰۰ ریال
بنابراین وقتی شخص جلوی عابر بانک دکمه تایید رو می زنه پیغام “عدم وجود موجودی کافی” رو می بینه، چرا؟
مبلغ فاکتور + کارمزد کارت به کارت بانک < موجودی فعلی (بعد از پاس شدن چک) ۱٫۰۰۰٫۰۰۰۰ +۷٫۰۰۰ > 1.000.000

اگر شخص جلوی عابر بانک زودتر دکمه تایید رو بزنه:
صندوقدار بانک با پیام “برگشت چک به دلیل عدم تامین موجود کافی” روبرو میشه، چرا؟
موجودی فعلی حساب (بعد از انتقال کارت به کارت) < مبلغ چک ۱٫۰۰۰٫۰۰۰۰ +۷٫۰۰۰ > 1.000.000

اما به هر حال این وسط کلی Query روی جدول های مختلف اجرا شده و داده هایی تغییر پیدا کردن تا به مرحله آخر برسه، تکلیف اونها چی میشه؟

انجام دستورات اسید یا تراکنش مشکلی که امکان داره در این شرایط اتفاق بیفته پیشگیری میکنه و به شما کمک می کنه تا با خیال راحت کارتون رو انجام دهید.

حال برای اینکه پیاده سازی این مسئله رو به خوبی بتوانید انجام بدین، محتوای آموزشی از سایت دانشجویار که زحمت کشیدن و توضیح کامل داده شده رو به شما معرفی میکنم، برای مشاهده اینجا کلیک کنید.

Add a Comment

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