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