TCL-COMMIT, ROLLBACK, SAVEPOINT


TCL- (TRANSACTION CONTROL LANGUAGE)

COMMIT, ROLLBACK, SAVEPOINT

 

ডাটা সংরক্ষণ কৌশল

ডাটা সেভ করা বা না করার কৌশল। ডাটাবেসে প্রদত্ত কমান্ডে পরিপ্রেক্ষিতে সাধিত পরিবর্তন সেভ করার প্রয়োজন রয়েছে। আর সেভ না করতে চাইলে উক্ত ডাটা বাদ দিতে হবে। স্থায়ীভাবে ডাটা সেভ করার জন্য কমিট (COMMIT COMMAND)ব্যবহার করা হয়ে থাকে। মূলতঃ COMMIT কমান্ডটি ব্যবহার করে আমরা ডাটা সেভ করে থাকি।

 

Advantage of Commit Command

1.  Finally ডাটা সেভ বা  Commit করার পুর্বে ডাটা দেখে নিয়ে সেভ করা যায়। ইচ্ছা করলে বাদ দেয়াও যায়।

2.  Comfirm বা নিশ্চিত হয়ে তারপরই ডাটা সেভ বা বাদ দেওয়া হয়, ফলে ভুলের সম্ভাবনা কমে যায়।

3.  Any number of DML command will be treated as a single entity or logical unit of work.

নিম্নলিখিত দুই ভাবে COMMIT হতে পারে।

 

    IMPECIT COMMIT (AUTO SAVE)

1.   DDL (DATA DEFINATION) COMMAND প্রদত্ত হয়ে থাকলে AUTO SAVE/COMIT হবে।

2. DCL (CREATE USERS, PRIVILAGE ETC) রদত্ত হয়ে থাকলে AUTO SAVE/COMIT হবে।

3.    COMMIT ev ROLLBACK COMMAND ছাড়াই NORMAL EXIT হলে AUTO SAVE/COMIT হবে।

4.    ABNORMAL OR SYSTEM FAILOR OR ANY ILLIGAL SHUT DOWN হয়ে থাকলে ডাটা সেভ হবে না।

5.     DDL COMMAND ISSUE করা হলে পুর্বে প্রদত্ত সকল DML COMMAND AUTOSAVE বা COMMIT হয়ে যাবে। এক্ষেত্রে DDL COMMAND SUCCESSFUL না হলেও COMMIT সম্পন্ন হবে।

 

  1. EXPLECIT COMMIT

USER কর্তৃক ডাটা সেভ করা, আংশিক ডাটা সেভ করা বা ডাটা বাদ দেওয়া (DISCARD/ROLLBACK) করার জন্য নিম্নলিখিত কমান্ড ব্যবহার করা হয়ে থাকে।

 

    1. COMMIT
    2. ROLLBACK
    3. SAVEPOINT


COMMIT

1.   এই কমান্ডটি ব্যবহার করলে PERMANENTLY ডাটা টেবিলে সেভ হবে।

2.   Sql buffer আর কোন ডাটা থাকবে না। অর্থাৎ Sql buffer এর সকল ডাটা মুছে যাবে।

3.  COMMIT কমান্ড ব্যহহার করা হলে সকল Savepoint মুছে যাবে।

4.   COMMIT কমান্ড ব্যহহার করা হলেই অন্য USER গন ডাটা দেখতে পারবে।

 

Syntax

SQL> COMMIT;

** Transaction start/begins when first executable SQL statement is encounterd.

 

ধরা যাক pr_master টেবিলে নিচের মত করে কমান্ড দিয়ে এক রো ডাটা এন্ট্রি করলাম।

SQL> insert into pr_master

 values (3, sysdate, 300) 

1 row created.

 

পুনরয় pr_master টেবিলে নিচের মত করে কমান্ড দিয়ে আরো এক রো ডাটা এন্ট্রি করলাম।

SQL> insert into pr_master

  values (4, sysdate, 500)

  

1 row created.

 

SELECT কমান্ড দিয়ে পুনরয় PR_MASTER টেবিলের ডাটা দেখে নেওয়া যাক।

SQL> select * from pr_master;

 

     PR_ID PR_DATE   PURCHASE_ID

---------- --------- -----------

         1 14-MAY-07           1

         2 03-MAY-07           2

         3 27-MAY-07         300

         4 27-MAY-07         500

 

SELECT কমান্ড দিয়ে নিশ্চিত হলাম যে, আমরা যাহা ডাটা এন্ট্রি করেছি তাহা সঠিক, কোন প্রকার ভুল নেই সুতরাং ডাটা সেভ করা উচিঁত। নিচের মত করে Commit Command দিয়ে ডাটা সেভ করা হলো।

SQL> commit; 

Commit complete.

 

ধরা যাক,  EMPLOYEE টেবিলে নিচের মত করে কমান্ড দিয়ে এক রো ডাটা UPDATE করলাম।

SQL>UPDATE EMPLOYEE

SET EMPLOYEE_NAME ='SHIMANTO'

WHERE EMPLOYEE_NO=200 

1 row updated.

 

SELECT কমান্ড দিয়ে নিশ্চিত হলাম যে, আমরা যা ডাটা এন্ট্রি করেছি তাহা সঠিক, কোন প্রকার ভুল নেই সুতরাং ডাটা সেভ করা উচিঁত।

 

SQL> select * from employee; 

EMPLOYEE_ID EMPLOYEE_N EMPLOYEE_ EMPLOYEE_NO

----------- ---------- --------- -----------

          1 HEEMEL                       100

          2 SHIMANTO                     200

 

নিচের মত করে Commit Command দিয়ে ডাটা সেভ করা হলো।

 

SQL> commit; 

Commit complete.

 

একই ভাবে ডাটা ডিলিট বা এডিট/ Update করেও উপরের নিয়মে Commit দিয়ে ডাটা সেভ করতে হবে।

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন