Bir transaction; birden çok SQL sorgularının çalıştırıldığı ama Oracle’ın, bu sorguların tamamını bir ünite(set) olarak algıladığı mantıksal sorgu bloğudur. Bu blok rollback ya da commit ile parçalanabilir veya sonlandırılabilir. Yani begin yada herhangi bir SQL cümlesi ile başladığımız ve COMMIT, ROLLBACK veya işlemleri sonlandıracak bir söz deyimi ile karşılaşmamız arasında yapılan tüm aksiyonlardır. Transaction işlemi başlar ve bitirilir. Transaction’nın başlaması için;
- Veri tabanına bağlanıp ilk SQL cümlesinin çalışması
- Her transaction bitiminden sonra sonra yeni bir SQL’in çalışması ile
Bir transaction’ın bitmesi için aşağıdaki işlemlerden birinin olması yeterlidir.
- COMMIT veya ROLLBACK işlemlerinden birinin yapılması
- DDL işlemlerinden birinin(CREATE ,DROP,ALTER ve RENAME) yapılıyor olması. Bunun nedeni ise hatırlayacağınız gibi DDL işlemleri AUTO COMMIT ‘dir. Yani sizin commit etmenize gerek yoktur direk commitler.
- DCL işlemlerininden birinin yapılması GRANT,REVOKE gibi. Bunun nedeni de yine AUTO COMMIT olmasıdır.
- Kullanıcının veri tabanından bağlantısının kesilmesi.
COMMIT : Çalışmasını dışardan vereceğimiz komut ile tetiklebilmek için 2 farklı komut çalıştırabiliriz. Bunlar COMMIT ve COMMIT WORK’tür. Commit transaction’ı sonlandırarak tüm yapılan değişikliklerin kalıcı olmasını sağlamaktadır. Bu sayede yapılan tüm değişiklikler tüm sessionlar tarafından görünür olabilecektir.Örneşin aşağıdaki işlem bir transactiondır ve işlemin sonunda herhangi bir problem olmadığında COMMIT işlemi ile transactionımız son bulur.
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;