در این قسمت از آموزش اوراکل بعد از آشنایی با دستور Merge در اوراکل قصد داریم آموزش آشنایی با Database Transactions را یاد بگیریم.

یک Database Transactions در واقع مجموعه و گروهی از دستورات و کوئری های SQL می باشد به هدف انجام فرآیندهای منطقی در دیتابیس صورت می گیرد.

یک transaction تراکتش بخش جدایی ناپذیر دستورات و کوئری های SQL می باشد که تایج این کوئری ها در هر شرایطی باید پایدار و دائمی باشد.

یک مثال ساده ای که درمورد Database Transactions می توانیم بزنیم انتقال پول از یک حساب بانک به حساب دیگری می باشد در واقع یک دستور UPDATE مبلغی را از حساب بانکی فرد کم می کند و با یک دستور دیگر همان مبلغ به حسابی دیگر اضافه خواهد شد. هر دو تراکنش کم شدن و اضافه شدن مبالغ از حساب ها در کل دیتابیس کاملا دائمی و پایدار می باشد به این دلیل میگوییم پایدار که اگر مبغلی در حین کار گم شود تمامی تراکنش های کم و اضافه شدن مبلغ به عقب بازگشته و روال کار برمیگرداند به صورتی که در ابتدا کاری انجام نشده است.

تراکنش transaction برای تمامی دستورات UPDATE , INSERT , DELETE را شامل می شود.

Commit و Rollback یک تراکنش Transaction

زمانی که بخواهید نتیجه یک تراکنش transaction حاصل از انجام کوئری را دائمی و یایدار و ثایت کنید بایستی بعد از انجام کوئری دستور commit را اجرا کنید و اگر بخواهید نتایج تراکنش را به حالت اول و قبل از انجام تراکنش برگردانید بایستی دستور Rollback را اجرا کنید و با اجرا دستور Rollback نتایج تمامی رکوردها و تراکنش ها به حالت قبل از انجام تمامی تراکنش ها برمی گردد.

مثال زیر یک تراکنشی می باشد که تغییرات آن پایدار و دائمی می باشد.

آموزش اوراکل

مثال زیر یک تراکنشی می باشد که تغییرات آن به حالت پایدار و اولیه برمی گردد.

آموزش Oracle

شروع یک تراکنش Transaction و پایان دادن به یک Transaction

یک تراکنش transaction یک واحد منطقی اجرای فرآیند که می تواند به چندین دستور و کوئری SQL تقسیم می شود.

یک تراکنش transaction زمانی که شروع می شود اتفاقات زیر می افتد:

  • شما به دیتابیس ارتباط برقرار کرده و دستورات و کوئری های (DML (INSERT,UPDATE,DELETE را اجرا می کند.
  • زمانی که تراکنش قبلی transaction پایان یابد یک دستور DML دیگری اجرا می شود.

یک تراکنش transaction زمانی که پایان می یابد اتفاقات زیر می افتد:

  • با انجام دستورات COMMIT یا ROLLBACK تراکنش را تعیین وضعیت می کنید.
  • با انجام دستورات DDL، مانند دستور CREATE TABLE برای ساخت جدول بصورت اتوماتیک Commit انجام شده و کلا دستورات DDL نیازی به اجرای دستورات Commit و Rollback ندارند. (دستورات DML فقط بعد از اجرا نیاز به اجرای دستورات Commit و Rollback می باشد)
  • زمانی که دستورات DCL را اجرا می کنید مانند دستور GRANT ، بصورت اتوماتیک Commit انجام می شود.
  • زمانی که ارتباط با دیتابیس قطع شود اگر از محیط SQL*PLUS بصورت کاملا عادی با اجرای دستور EXIT خارج شوید دستور Commit برای دستورات DML اجرا خواهد شد و اگر بصورت غیر عادی از برنامه SQL*PLUS خارج شوید و دستور Rollback بصورت خودکار اجرا خواهد شدو تغییرات تراکنش به روال قبل باز خواهد گشت.
  • اگر یک دستور DML با شکست مواجه شود دستور Rollback بصورت خودکار اجرا خواهد شد.

Savepoints

شما می توانید برای هر بخش از هر تراکتش یک حالتی به نام savepoint قرار دهید. با انجام savepoint بعد از انجام هر تراکنش به شما اجازه می دهد در صورت مشکل در داده ها به نقطه savepoint برگردید. (مانند save در مراحل بازی که در صورتی در بازی شکست بخورید به آن نقطه که save کردین برمیگردین) .

زمانی که کوئری شما شامل تراکنش های طولانی و با تعداد زیاد باشد استفاده از savepoint مناسب و کاربردی می باشد و در انجام تراکنش های تعداد زیادی دارد با انجام عملیات savepoint می توانید تراکنش ها تقسیم بندی کرده و هر زمان که تراکنشی به خطا بخورد و یا داده ای را اشتباه تغییر داده باشید با انجام restore به savepoint مورد نظر به نقطه ای از تراکنش که داده ها و تراکنش ها با موفقیت انجام شده است رسیده و داده های انجام شده را rollback کنید.

در واقع با استفاده از savepoint می توانید نراکنش های بزرگ را به تراکنش های کوچکتر تقسیم کرده و هر مرحله از transaction را مدیریت و اجرا کنید.

آموزش اوراکل
آموزش اوراکل
آموزش اوراکل

اطلاعات بیشتر در مورد transactions