Transaction
Konu başlıkları
|
Transaction Nedir
Transaction , veri tabanında yapılacak ekleme , silme , güncelleme işlemleri esnasında elektrik kesilmesi , programın crash olması , hafızanın taşması, … gibi durumlarda veri ve işlem kaybını engeller. Veri tabanında yapılacak operasyonların yapıldığının veya yapılmadığının garantisi verir.
Transaction Çalışma Mantığı
Transaction , bu veri kayıplarını kendi içerisindeki 3 aşamalı mekanizma ile engellemektedir.
- Birinci aşamada , programcıdan yapmak istediği operasyonları alır.
- İkinci aşamada transaction bu bilgileri hemen veri tabanından silinmez.SQL motoru , veri tabanında programcının yapmak istediği operasyonlara ait tüm bilgileri saklar ve diske yazar.
- Üçüncü aşamada ise operasyon bilgilerine bakarak operasyonlar veri tabanında gerçekleştirilir.
Transaction , bu aşamalardan üçüncü aşamaya geleceğe kadar , hiç bir şekilde veri tabanındaki verilere dokunmaz.Birinci veya ikinci aşamalarda bir engel oluştuğunda , transaction operasyonları iptel eder.Üçüncü aşamada ise ne olursa olsun operasyonlar veri tabanında yapılır. Böylelikle veri tabanında operasyon güvenliği sağlanır , yani yapılmak istenen operasyonların yapıldığı veya yapılmadığı garanti altına alınmış olur.
Transaction Fonksiyonları
START_TRANSACTION
- Transaciton mekanizmasını çalıştırır.
- Bu fonksiyon çağırıldıktan sonra programcı yapacağı tüm veri tabanı operasyonlarını yapar.
- Transaction'ın programcıdan operasyonları aldığı aşama yani birinci aşamadır.
COMMIT_TRANSACTION
- Bu fonksiyon , programcı yapacağı yapacağı operasyonları aldıktan sonra , birinci aşamadan ikinci aşamaya geçildiği bölümdür.
- Veri tabanında yapılacak operasyonlar programcıdan alınarak , operasyonlar SQL motoruna devredilir.
- SQL motoru bu fonksiyondan sonra , operasyon bilgilerini diske kaydeder ve üçüncü aşamaya geçerek operasyonları gerçekleştirir.
CANCEL_TRANSACTION
- Bu fonksiyon transaction'ı sonlandırır. Fonksiyon , sadece start_transaction ve commit_transaction fonksiyonları arasında çalışır.
- Transaction tamamen sonlanır , transaction ile yapılmak istenen tüm operasyonlar iptal edilir.
- commit_transaction fonksiyonundan sonra engellenemeyen işlemler başlatılır.Çünkü operasyonların kontrolü programcıdan çıkar.Sql motoru devreye girer.
Transaction Örneği
- Transaction başlatıldı.Programcı veri tabanında güncelleme operasyonu yapmak istiyor.Programcıdan , güncelleme operasyonu bilgileri alındı ve commit_transaction fonksiyonu ile kontrol SQL motoruna bırakıldı. Artık SQL motoru , operasyon bilgilerine bakarak veri tabanında kayıtları güncelleyecektir.
DB->START_TRANSACTION(); SQL_QUERY sql_query ( DB ); sql_query.PREPARE_UPDATE ( "k9_sabit_degerler","sabit_deger_id","adr_mail_server_adi," "adr_mail_port,adr_mail_baglanti_guvenligi","" ); sql_query.SET_VALUE ( ":adr_mail_server_adi", m_ui->lineEdit_mail_server->text() ); sql_query.SET_VALUE ( ":adr_mail_port", m_ui->lineEdit_port->text()); sql_query.SET_VALUE ( ":adr_mail_baglanti_guvenligi", m_ui->comboBox_mail_baglanti_guvenligi->currentText() ); sql_query.UPDATE(); DB->COMMIT_TRANSACTION();