TRANSACTION CONTROL LANGUAGE [TCL]

DEFINISI DAN TAKRIF

TCL ialah singkatan bagi Transaction Control Language atau Transaksi Kawalan Bahasa.

            Kawalan Bahasa Transaksi (TCL) adalah bahasa komputer dan subset SQL yang digunakan untuk mengawal pemprosesan transaksi dalam sistem pangkalan data. Transaksi ialah unit logik kerja yang terdiri daripada satu atau lebih kenyataan SQL, biasanya sekumpulan Manipulasi Data Bahasa (DML).


KEGUNAAN & FUNGSI

Transaksi Kawalan Bahasa digunakan untuk menguruskan perubahan yang dibuat oleh kenyataan DML (Data Manipulation Language). TCL juga merupakan sebuah arahan SQL yang digunakan untuk menguruskan perubahan yang memberi kesan kepada data. Arahan ini adalah memberi komitmen (commit), melakukan pengembalian (rollback) dan savepoint.


COMMIT (KOMITMEN)

TUJUAN

            Untuk menamatkan transaksi yang tinggi dan menetapkan semua perubahan yang dilakukan dalam urusniaga. Arahan ini juga akan memadamkan semua savepoints dalam urusniaga dan melepaskan kunci transaksi itu. Arahan ini juga boleh digunakan untuk melakukan pengedaran urusniaga dalam keraguan secara manual.


SINTAKS

     COMMIT [WORK]
         [ COMMENT 'text'
         | FORCE 'text' [, integer] ]



DEMONSTRASI COMMIT DALAM TRANSAKSI SERVER SQL.

---- SYNTAX DEMONSTRATION OF COMMIT TRANSACTION IN SQL
COMMIT [TRAN | TRANSACTION] [TRANSACTION_NAME | TRANSACTION_VARIABLE_NAME]

Contoh;

---- DEMONSTRATION OF COMMIT IN SQL TRANSACTION-----
BEGIN TRANSACTION T1
GO
--- UPDATE NAME COLUMN OF USERLOGIN TABLE 
UPDATE Userlogin SET Name ='James Baswar' WHERE ID = '101'
GO
COMMIT TRANSACTION T1; ----- COMMIT TRANSACTION T1
GO

Contoh;

----- DEMONSTRATION OF COMMIT A NESTED TRANSACTION

CREATE TABLE TESTTRANSACTION(TRACOUNT INT PRIMARY KEY, TRANNAME VARCHAR(10))
GO
BEGIN TRANSACTION T1 ;
GO
INSERT INTO TESTTRANSACTION VALUES (1,'T1')
----- @@TRANCOUNT RETURNS NUMBER OF ACTIVE TRANSACTION IN CURRENT CONNECTION
PRINT CAST(@@TRANCOUNT AS NVARCHAR(10))
GO
BEGIN TRANSACTION T2;
GO
INSERT INTO TESTTRANSACTION VALUES (2,'T2')
PRINT CAST(@@TRANCOUNT AS NVARCHAR(10))
GO
BEGIN TRANSACTION T3;
GO
INSERT INTO TESTTRANSACTION VALUES (3,'T3')
PRINT CAST(@@TRANCOUNT AS NVARCHAR(10))
GO
COMMIT TRANSACTION  T3;
PRINT CAST(@@TRANCOUNT AS NVARCHAR(10))
GO
COMMIT TRANSACTION T2;
PRINT CAST(@@TRANCOUNT AS NVARCHAR(10))
GO
COMMIT TRANSACTION T1;
PRINT CAST(@@TRANCOUNT AS NVARCHAR(10))
GO


DI MANA?
   ·         KERJA [WORK]: Hanya disokong untuk mematuhi standard SQL. Penyata komitmen dan komitmen kerja adalah sama.

   ·         KOMEN [COMMENT]: Menentukan komen untuk dikaitkan dengan urus niaga semasa. ‘Teks’ dipetik literal hingga lebih 50 aksara yang disimpan oleh Oracle dalam kamus pandangan data DBA_2PC_PENDING bersama dengan ID transaksi jika urusniaga itu dalam keraguan.

   ·         FORCE:Transaksi yang diedarkan atau dilakukan secara manual walaupun terdapat keraguan. Urus niaga itu dikenalpasti melalui teks tempatan atau ID global. Untuk mencari ID dalam transaksi tersebut, gunakan fungsi pertanyaan pada kamus data pandangan DBA_2PC_PENDING. Anda juga boleh menggunakan Integer khusus untuk menetapkan transaksi pada beberapa perubahan sistem (SCN). Jika anda meninggalkan integer, transaksi akan dilakukan dengan menggunakan SCN semasa. Komitmen penyata ini menggunakan FORCE yang tidak disokong oleh PL/ SQL.


PRASYARAT

Anda memerlukan keistimewaan untuk melakukan transaksi semasa anda. Untuk melakukan transaksi secara manual, anda mestilah mempunyai sistem FORCE TRANSACTION. Untuk melakukannya, transaksi yang diragukan apda asalnya dilakukan  atau diedarkan oleh pengguna lain, anda mesti mempunyai sistem FORCE ANY TRANSACTION.

Untuk melakukan transaksi semasa anda, masukkan
SQL> COMMIT WORK;


ROLLBACK

TUJUAN

            Untuk membatalkan kerja yang dilakukan dalam transaksi semasa. Arahan ini juga boleh digunakan untuk membatalkan kerja secara manual yang dilakukan oleh transaksi dalam karaguan edaran.


SINTAK

     ROLLBACK [WORK]
         [ TO [SAVEPOINT] savepoint
         | FORCE 'text' ]


DEMONSTRASI ROLLBACK DALAM TRANSAKSI SERVER SQL.

-----SYNTAX DEMONSTRATION OF USING ROLLBACK IN TRANSACTION SQL QUERY
ROLLBACK [TRAN | TRANSACTION ] [SAVEPOINT_NAME | SAVEPOINT_VARRIABLE ] ;

Contoh;
-----DEMONSTRATION OF USING ROLLBACK IN TRANSACTION SQL QUERY
CREATE TABLE TESTROLLBACK(EMPID INT PRIMARY KEY, EMPNAME VARCHAR(20) )
GO
INSERT INTO TESTROLLBACK VALUES (1001,'JAMES GOSLING')
GO
BEGIN TRANSACTION T1; -------BEGIN TRANSACTION
GO
INSERT INTO TESTROLLBACK VALUES (1002,'RAHMAAN')
GO
SAVE TRANSACTION SAVEP1;  ------CREATE SAVE POINT  IN TRANSACTION
GO
INSERT INTO TESTROLLBACK VALUES (1003,'PETERE BABHBAD')
INSERT INTO TESTROLLBACK VALUES (1004,'HERMAINI')
UPDATE TESTROLLBACK SET EMPNAME = 'ARUN SINGH' WHERE EMPID =1003
GO
ROLLBACK TRANSACTION SAVEP1 ; ----------- ROLLBACK TRANSACTION TO SAVEP1 SAVEPOINT
GO
COMMIT TRANSACTION T1; --- COMMIT TRANSACTION T1 TO SAVE ALL WORK DONE


DI MANA?
   ·         KERJA [WORK]: Merupaka pilihan dan disediakan untuk keserasian ANSI.

   ·         KEPADA [TO]: Rollback menyokong transaksi semasa untuk savepoint yang dinyatakan. Jika fasal ini ditinggalkan, seluruh kenyataan akan rollback transaksi berkenaan.

   ·         FORCE: Transaksi yang diragukan akan diedarkan semula secara manual menggunakan fungsi rollback. Transaksi ini dapat dikenalpasti oleh teks tempatan atau transaksi global. Untuk mencari ID bagi transaksi tersebut, query kamus data pandangan DBA_2PC_PENDING. Penyata rollback akan mengembalikan fasal FORCE yang tidak disokong di PL / SQL.


PRASYARAT

Tiada keistimewaan yang diperlukan untuk melancarkan kembali transaksi semasa. Untuk melancarkan semula secara manual transaksi keraguan yang diedarkan, anda mesti mempunyai keistimewaan FORCE TRANSACTION. Untuk melancarkan transaksi keraguan yang diedarkan secara manual oleh pengguna lain, anda perlu mempunyai keistimewaan system FORCE ANY TRANSACTION.

Untuk melancarkan kembali transaksi semasa, masukkan:
SQL> ROLLBACK;


SAVEPOINT

Arahan Savepoint digunakan untuk mengenal pasti titik dalam transaksi yang kemudiannya boleh digunakan untuk melancarkan kembali titik yang telah diset. Savepoint berguna dalam situasi di mana tiada satu kesilapan pun yang akan berlaku. Penggunaan Savepoint adalah untuk melancarkan kembali sebahagian daripada transaksi dalam hal ralat yang kerap kepada lebih cekap daripada yang mempunyai setiap ujian transaksi. Ini untuk melihat sama ada kemas kini adalah sah sebelum membuat kemaskinian. Kemaskini dan rollback adalah operasi yang mahal, jadi Savepoint hanya berkesan jika kebarangkalian menghadapikesilapan dalah rendah dan kos untuk memeriksa kesahihan maklumat yang agak tinggi.


DEMONSTRASI SAVEPOINT DALAM TRANSAKSI SERVER SQL.

---- SYNTAX DEMONSTRATION OF USING SAVE POINT IN SQL SERVER TRANSACTION
SAVE [TRAN | TRANSACTION ] [SQVEPOINT_NAME | SAVEPOINT_VARIABLE_NAME]

Contoh:

---- DEMONSTRATION OF USING SAVE POINT IN SQL SERVER TRANSACTION

CREATE TABLE TESTSAVEPOINT(PRODUCT_ID INT PRIMARY KEY, PRODUCT_NAME VARCHAR(50))
GO
BEGIN TRANSACTION T1;
GO
INSERT INTO TESTSAVEPOINT VALUES (1001 , 'MOUSE')
INSERT INTO TESTSAVEPOINT VALUES (1002 , 'KEYBOARD')
UPDATE TESTSAVEPOINT SET PRODUCT_NAME = 'MONITOR' WHERE PRODUCT_ID = 1002

GO
SAVE TRANSACTION SAVEP1; ---------- CREATING FIRST SAVEPOINT SAVEP1
GO
INSERT INTO TESTSAVEPOINT VALUES (1003, 'KEYBOARD')
INSERT INTO TESTSAVEPOINT VALUES (1004, 'PRINTER')
GO
SAVE TRANSACTION SAVEP2;      ---------- CREATING FIRST SAVEPOINT SAVEP1
GO
INSERT INTO TESTSAVEPOINT VALUES (1005, 'SCANNER')
UPDATE TESTSAVEPOINT SET PRODUCT_NAME = 'CPU' WHERE PRODUCT_ID = 1005

ROLLBACK TRANSACTION SAVEP2 ---- TRANSACTION ROLLBACKED TO SAVEPOINT SAVEP2 SO IT'S VALUE NOT INSERTED INTO TABLE 
INSERT INTO TESTSAVEPOINT VALUES (1006,'SCANNER')

COMMIT TRANSACTION T1;

Ulasan

Catatan popular daripada blog ini

SISTEM PENGOPERASIAN KOMPUTER (OS)

APA ITU ASCII (AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE) ?

APA ITU EBCDIC (EXTANDENT BINARY CODEC DECIMAL INTERCHANGE CODE) ?

JENIS-JENIS SISTEM PENGOPERASIAN KOMPUTER

JENIS - JENIS ARAHAN SQL