HSQLDB - İşlemler

Bir Transactiontek bir çalışma birimi olarak gerçekleştirilen ve kabul edilen sıralı bir veritabanı işleme işlemleri grubudur. Diğer bir deyişle, tüm işlemler başarıyla yürütüldüğünde, ancak o zaman işlemin tamamı tamamlanacaktır. İşlem içindeki herhangi bir işlem başarısız olursa, işlemin tamamı başarısız olur.

İşlemlerin Özellikleri

Temel olarak, işlem 4 standart özelliği destekler. ACID özellikleri olarak adlandırılabilirler.

Atomicity - İşlemlerdeki tüm işlemler başarılı bir şekilde yürütülür, aksi takdirde işlem başarısızlık noktasında iptal edilir ve önceki işlemler önceki konumuna geri döndürülür.

Consistency - Veritabanı, başarıyla tamamlanmış bir işlemden sonra durumları uygun şekilde değiştirir.

Isolation - İşlemin birbirinden bağımsız ve şeffaf bir şekilde işlemesini sağlar.

Durability - Bir sistem arızası durumunda, taahhüt edilen bir işlemin sonucu veya etkisi devam eder.

Kaydetme, Geri Alma ve Kaydetme Noktası

Bu anahtar sözcükler esas olarak HSQLDB işlemleri için kullanılır.

Commit- Her zaman başarılı işlem COMMIT komutu çalıştırılarak tamamlanmalıdır.

Rollback - İşlemde bir hata oluşursa, işlemde referans verilen her tabloyu önceki durumuna döndürmek için ROLLBACK komutu yürütülmelidir.

Savepoint - Geri alınacak işlemler grubu içinde bir nokta oluşturur.

Misal

Aşağıdaki örnek, commit, geri alma ve Savepoint ile birlikte işlemler kavramını açıklamaktadır. Müşteriler tablosunu id, isim, yaş, adres ve maaş sütunlarıyla ele alalım.

İD İsim Yaş Adres Maaş
1 Ramesh 32 Ahmedabad 2000,00
2 Karun 25 Delhi 1500.00
3 Kaushik 23 Kota 2000,00
4 Chaitanya 25 Bombay 6500.00
5 Harish 27 Bhopal 8500.00
6 Kamesh 22 MP 1500.00
7 Murali 24 Indore 10000.00

Yukarıdaki verilerin satırları boyunca müşteri tablosunu oluşturmak için aşağıdaki komutları kullanın.

CREATE TABLE Customer (id INT NOT NULL, name VARCHAR(100) NOT NULL, age INT NOT
NULL, address VARCHAR(20), Salary INT, PRIMARY KEY (id));
Insert into Customer values (1, "Ramesh", 32, "Ahmedabad", 2000);
Insert into Customer values (2, "Karun", 25, "Delhi", 1500);
Insert into Customer values (3, "Kaushik", 23, "Kota", 2000);
Insert into Customer values (4, "Chaitanya", 25, "Mumbai", 6500);
Insert into Customer values (5, "Harish", 27, "Bhopal", 8500);
Insert into Customer values (6, "Kamesh", 22, "MP", 1500);
Insert into Customer values (7, "Murali", 24, "Indore", 10000);

COMMIT için örnek

Aşağıdaki sorgu, yaş = 25 olan tablodan satırları siler ve bu değişiklikleri veritabanına uygulamak için COMMIT komutunu kullanır.

DELETE FROM CUSTOMERS WHERE AGE = 25;
COMMIT;

Yukarıdaki sorguyu yaptıktan sonra aşağıdaki çıktıyı alacaksınız.

2 rows effected

Yukarıdaki komutu başarıyla uyguladıktan sonra, aşağıda verilen komutu uygulayarak müşteri tablosunun kayıtlarını kontrol edin.

Select * from Customer;

Yukarıdaki sorguyu yaptıktan sonra aşağıdaki çıktıyı alacaksınız.

+----+----------+-----+-----------+----------+
| ID |   NAME   | AGE |   ADDRESS |  SALARY  |
+----+----------+-----+-----------+----------+
| 1  |  Ramesh  |  32 | Ahmedabad |   2000   |
| 3  |  kaushik |  23 |   Kota    |   2000   |
| 5  |  Harish  |  27 |   Bhopal  |   8500   |
| 6  |  Kamesh  |  22 |    MP     |   4500   |
| 7  |  Murali  |  24 |   Indore  |   10000  |
+----+----------+-----+-----------+----------+

Geri Alma Örneği

Aynı Müşteri tablosunu girdi olarak ele alalım.

İD İsim Yaş Adres Maaş
1 Ramesh 32 Ahmedabad 2000,00
2 Karun 25 Delhi 1500.00
3 Kaushik 23 Kota 2000,00
4 Chaitanya 25 Bombay 6500.00
5 Harish 27 Bhopal 8500.00
6 Kamesh 22 MP 1500.00
7 Murali 24 Indore 10000.00

Aşağıda, yaş = 25 olan tablodaki kayıtları silerek ve ardından veritabanındaki değişiklikleri ROLLBACK yaparak Geri Alma işlevini açıklayan örnek sorgu verilmiştir.

DELETE FROM CUSTOMERS WHERE AGE = 25;
ROLLBACK;

Yukarıdaki iki sorgunun başarılı bir şekilde yürütülmesinden sonra, aşağıdaki komutu kullanarak Müşteri tablosundaki kayıt verilerini görüntüleyebilirsiniz.

Select * from Customer;

Yukarıdaki komutu uyguladıktan sonra, aşağıdaki çıktıyı alacaksınız.

+----+----------+-----+-----------+----------+
| ID |   NAME   | AGE |   ADDRESS |  SALARY  |
+----+----------+-----+-----------+----------+
|  1 |  Ramesh  |  32 | Ahmedabad |   2000   |
|  2 |  Karun   |  25 |   Delhi   |   1500   |
|  3 |  Kaushik |  23 |   Kota    |   2000   |
|  4 | Chaitanya|  25 |   Mumbai  |   6500   |
|  5 |  Harish  |  27 |   Bhopal  |   8500   |
|  6 |  Kamesh  |  22 |     MP    |   4500   |
|  7 |  Murali  |  24 |    Indore |   10000  |
+----+----------+-----+-----------+----------+

Silme sorgusu, yaşı = 25 olan müşterilerin kayıt verilerini siler. Geri Al komutu, Müşteri tablosunda bu değişiklikleri geri alır.

Savepoint örneği

Kayıt noktası, işlemin tamamını geri almadan işlemi belirli bir noktaya geri alabileceğiniz bir noktadır.

Aynı Müşteri tablosunu girdi olarak ele alalım.

İD İsim Yaş Adres Maaş
1 Ramesh 32 Ahmedabad 2000,00
2 Karun 25 Delhi 1500.00
3 Kaushik 23 Kota 2000,00
4 Chaitanya 25 Bombay 6500.00
5 Harish 27 Bhopal 8500.00
6 Kamesh 22 MP 1500.00
7 Murali 24 Indore 10000.00

Bu örnekte ele alalım, Müşteriler tablosundan üç farklı kaydı silmeyi planlıyorsunuz. Her silme işleminden önce bir Kayıt Noktası oluşturmak istersiniz, böylece uygun verileri orijinal durumuna geri döndürmek için istediğiniz zaman herhangi bir Kayıt Noktasına geri dönebilirsiniz.

İşte işlemler dizisi.

SAVEPOINT SP1;
DELETE FROM CUSTOMERS WHERE ID = 1;
SAVEPOINT SP2;
DELETE FROM CUSTOMERS WHERE ID = 2;
SAVEPOINT SP3;
DELETE FROM CUSTOMERS WHERE ID = 3;

Şimdi, üç Savepoint oluşturdunuz ve üç kayıt sildiniz. Bu durumda, 2 ve 3 numaralı kayıtları geri almak istiyorsanız, aşağıdaki Geri Al komutunu kullanın.

ROLLBACK TO SP2;

SP2'ye geri döndüğünüzden beri yalnızca ilk silme işleminin gerçekleştiğine dikkat edin. Müşterilerin tüm kayıtlarını görüntülemek için aşağıdaki sorguyu kullanın.

Select * from Customer;

Yukarıdaki sorguyu yaptıktan sonra aşağıdaki çıktıyı alacaksınız.

+----+----------+-----+-----------+----------+
| ID |   NAME   | AGE |   ADDRESS |  SALARY  |
+----+----------+-----+-----------+----------+
|  2 |   Karun  |  25 |  Delhi    |   1500   |
|  3 |  Kaushik |  23 |  Kota     |   2000   |
|  4 | Chaitanya|  25 |  Mumbai   |   6500   |
|  5 |  Harish  |  27 |  Bhopal   |   8500   |
|  6 |  Kamesh  |  22 |  MP       |   4500   |
|  7 |  Murali  |  24 |  Indore   |  10000   |
+----+----------+-----+-----------+----------+

Kayıt Noktasını Serbest Bırak

RELEASE komutunu kullanarak Savepoint'i serbest bırakabiliriz. Aşağıda genel sözdizimi verilmiştir.

RELEASE SAVEPOINT SAVEPOINT_NAME;