با عرض سلام و خسته نباشید خدمت کاربران محترم سایت آموزشی پی وی لرن. و کاربرانی که آموزش کامل PL/SQL را دنبال می کنند. در این جلسه، ما در مورد تراکنش PL / SQL صحبت خواهیم کرد. پایگاه داده تراکنش در PL / SQL یک واحد اتمی کار است که ممکن است شامل یک یا چند جمله مرتبط با SQL باشد. حالا باید بگیم چرا اتم ؟ اتم نامیده می شود زیرا تغییرات پایگاه داده بوسیله اظهارات SQL که تراکنش را تشکیل می دهند می تواند به صورت جمعی متعهد باشد.
یک بیانیه SQL با موفقیت اجرا شده و یک تراکنش متعهد یکسان،نیست. حتی اگر یک دستور SQL با موفقیت اجرا شود، مگر آنکه تراکنش حاوی این بیانیه متعهد شود، می توان آن را بازگرداند و تمام تغییرات انجام شده توسط این بیانیه ها را می توان لغو کرد.
یک تراکنش شروع و پایان است. تراکنش زمانی شروع می شود که یکی از رویدادهای زیر رخ دهد.
یک تراکنش به پایان می رسد زمانی که یکی از وقایع زیر رخ می دهد.
تراکنش با صدور فرمان SQL COMMIT انجام می شود. دستورالعمل کلی برای دستور COMMIT به صورت زیر است.
1 | COMMIT; |
به طور مثال :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Komal', 22, 'MP', 4500.00 ); COMMIT; |
تغییرات ساخته شده در پایگاه داده بدون COMMIT می تواند با استفاده از دستور ROLLBACK لغو شود.
دستورالعمل کلی برای دستور ROLLBACK به صورت زیر است.
1 | ROLLBACK [TO SAVEPOINT < savepoint_name>]; |
هنگامی که یک تراکنش به علت وضعیت بی سابقه ای مانند خراب شدن سیستم، قطع می شود، کل تراکنش از زمان انجام، یک مرتبه به طور خودکار از بین می رود. اگر از Savepoint استفاده نکنید، به سادگی از بیانیه زیر استفاده کنید تا همه تغییرات را به عقب برگردانید.
1 | ROLLBACK; |
جایزه ها
Points of Sale نوعی نشانگرهایی هستند که با تنظیم برخی از پست های بازرسی، در تقسیم یک تراکنش طولانی به واحدهای کوچکتر کمک می کنند. با تنظیم پارامترهای ذخیره در یک تراکنش طولانی، در صورت لزوم می توانید به یک پست بازرسی بازگردید. که با صدور فرمان SAVEPOINT انجام می شود.
دستورالعمل کلی برای دستور SAVEPOINT به شرح زیر است.
1 | SAVEPOINT < savepoint_name >; |
برای مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (7, 'Rajnish', 27, 'HP', 9500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (8, 'Riddhi', 21, 'WB', 4500.00 ); SAVEPOINT sav1; UPDATE CUSTOMERS SET SALARY = SALARY + 1000; ROLLBACK TO sav1; UPDATE CUSTOMERS SET SALARY = SALARY + 1000 WHERE ID = 7; UPDATE CUSTOMERS SET SALARY = SALARY + 1000 WHERE ID = 8; COMMIT; |
ROLLBACK TO sav1 : این بیانیه همه تغییرات را به نقطه بازگرداند، جایی که تو savepoint sav1 را مشخص کردی.
پس از آن، تغییرات جدیدی که ایجاد می کنید شروع خواهند شد.
برای اجرای COMMIT به صورت خودکار هر زمان که دستور INSERT، UPDATE یا DELETE اجرا شود، می توانید متغیر محیط AUTOCOMMIT را به عنوان داشته باشید.
1 | SET AUTOCOMMIT ON; |
شما می توانید با استفاده از فرمان زیر خاموش شدن حالت خودکار را انجام دهید.
1 | SET AUTOCOMMIT OFF; |
خب همان طور که خواندید این جلسه در مورد تراکنش در PL / SQL صحبت کردیم. و دانستیم که پایگاه داده تراکنش در PL / SQL یک واحد اتمی کار است. همچنین در مورد شروع و پایان تراکنش، کنترل تراکنش ، اتخاذ تراکنش و … نبز مطالب مفیدی را فراگرفتید که امید واریم راضی بوده باشید.