işi biten transaction lar hakkında.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

işi biten transaction lar hakkında.

Mesaj gönderen meron06 »

Sel.Al.arkadaşlar.firebird 1.5 de bi proje geliştiriyoruz.kullanıcı sayısı 50 nin üzerinde .formlarımın birinde sürekli olarak sorgu çekilen bi bölümüm var(kullanıcının tıkladığı işlemin detayı).şimdi burda sormak istediğim birşey var.mesela bi sorgu çekiyoruz.bu sorguyla işimiz bitince query i kapatıyoruz.transactionu da hemen kapatıyoru.doğal olarak kullanıcının işlemlere tıklaması sonucu bu transaction yeniden aktif oluyor.ben burda query i kapatınca hemen transactionu da kapatıyorum.transactionu hemen kapatmak mı yoksa form kapanırkenmi kapatmak daha mantıklı.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

meron06 demişki
doğal olarak kullanıcının işlemlere tıklaması sonucu bu transaction yeniden aktif oluyor.ben burda query i kapatınca hemen transactionu da kapatıyorum.transactionu hemen kapatmak mı yoksa form kapanırkenmi kapatmak daha mantıklı.
Transaction bir iç hizmettir. Query veya Dataset Open olduğunda aktif, Close olduğunda Pasif olur. sizin ayrıca TransAction.Active := false demeneize gerek yoktur.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

sorgulama için transaction kullanmanıza gerek yok bence. ekleme,silme ve düzeltme işlemleri için sadece transaction kullanın.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

mkysoft yazdı:sorgulama için transaction kullanmanıza gerek yok bence. ekleme,silme ve düzeltme işlemleri için sadece transaction kullanın.
Transaction kullanımı (fb de) keyfi olmayıp, zorunluluktur.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

her sorgudan önce transaction u yeniden başlat bence.. aksi taktirde diğer kişiler tarafından yapılan değişiklikler senin oluşturduğun sorgu tarafından görünmeyecektir..
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

selimr yazdı:her sorgudan önce transaction u yeniden başlat bence.. aksi taktirde diğer kişiler tarafından yapılan değişiklikler senin oluşturduğun sorgu tarafından görünmeyecektir..
meron06 yazdı:]bu sorguyla işimiz bitince query i kapatıyoruz.
Query kapatılıyor doğal olarak transaction false dir. Query open olduğunda transaction true olacaktır...
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

sorgu yaparken kullandığımız bir query kapatılınca neden transaction false olsun anlamadım..
Benim bildiğim kadarı ile; query ler commit edilmediği sürece transactionlar kapatılmayacaktır..
Doğal olarak sonuç görüntülemek için oluşturulan bir query nin kapanması transactionun kapanmasını sağlamaz..
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

query ler commit edilmediği sürece transactionlar kapatılmayacaktır.
Query ler commit edilmez. transactionlar commit edilir, ancak burda Query lerde kapanır.. evet doğal olarak transaction false olmaz ancak. open olmayan query nin kimseye bir faydası da olmaz...
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

querylerin commit edilmesi hatalı bir anlatım oldu belki ama anlatmak isdiğim şu;

data üzerinde değişiklik yapmak üzere execsql şeklinde çalıştırılan bir queryden sonra değişikliklerin kalıcı olması için bağlı olan transaction un commit edilmesi durumunda doğal olarak transaction kapatılmış olacaktır..

fakat herhangi bir datadan sorgulama yaptığımız zaman, sorgulama sonucunda transactionunun kapatılması diye birşey sözkonusu değildir..

benim söylemek istediğim;
herhangi bir sorgunun sonucunun güncel olmasını sağlamak için; sorgunun bağlı olduğu transaction, sorgu yapılmadan önce açık olsa bile kapatılıp tekrar açılmalıdır.. aksi takdirde açık olduğu sürece diğer kullanıcılar tarafından veya diğer transactionlarda olan güncelleme ve değiştirme, yeni kayıt gibi işlemler sorgulama yapılan transaction tarafından görünmeyecektir.. bilmem anlabildimmi..
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

benim söylemek istediğim;
herhangi bir sorgunun sonucunun güncel olmasını sağlamak için; sorgunun bağlı olduğu transaction, sorgu yapılmadan önce açık olsa bile kapatılıp tekrar açılmalıdır.. aksi takdirde açık olduğu sürece diğer kullanıcılar tarafından veya diğer transactionlarda olan güncelleme ve değiştirme, yeni kayıt gibi işlemler sorgulama yapılan transaction tarafından görünmeyecektir.. bilmem anlabildimmi..
arkadaşım transaction un açık olması kaydın dataya işlenmesine engel değildir. + Commit veya CommitRteaining yöntemiyle dataya işlenen kayıtlar her türlü başkaca queryler tarafından close - open yöntemiyle görülürler. yani burda diğer querylerin dataya işlenen en son kaydı görmesi kaydı dataya işleyen transaction un kapalı veya açık olmasına bağlı değildir...
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

sevgili arkadaşım;

değişikliklerin diğer queryler tarafından görünmesi için; querylerin close; ve open yapılması yeterli olmaz..

örnek;
--
değişiklik ve yeni kayıt işlemelri için şunları kullanıyorum
query1 ve transaction1

sorgulama içinde ise
query2 ve transaction2

bu durumda sorgulama yapmak için transaction2 yi kapatıp tekrar açmadan transaction1 de query1 tarafından yapılan değişiklikler sorguda yani query2 de görünmeyecektir..
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

arkadaşım yine anlaşamıyoruz. ben diyorum ki bu dedikleriniz transaction sayesinde gerçekleşen işlemler değildir. yukarda belirttiğim gibi Transaction bir iç hizmettir. ve görevi bellidir. post edilmiş verileri içerisinde barındırır ve bu verileri ya boşaltır ya da VT ye işler. bunun dışında bir güncelleme işi için kullanılmaz. siz 2.query nin 1.Query den girilen veya silinen veya düzenlenen verileri görmesini isityorsanız 2.Query.close yapıp select ile Vt den kayıtları tekrar çekmelisiniz. burda 2.transaction u false true yaparak işi halledemezsiniz. Transaction Query, Table veya datasetlere bağlı çalışır. Query open olduğunda transaction da haliyle aktif hale gelir. ancak transaction true yapılması Query nin aktif olacağı manasına gelmez. burda marifet transactionda değildir. sizin belli aralıklarla Vt den select ile kayıtları çekmeniz ile mümkündür. Close edilen Query'e bağlı bir transaction un aktif olmasıda birşey ifade etmez. transactiona bilgi gönderen asıl bileşen table, query veya datasettir.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

daha önce başıma geldi ve bu forumda konuşuldu yanlış hatırlamıyorsam..

istersen verdiğim örnek gibi ufak bir şey dene..
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

transaction ac-kapa yapmayın...

Mesaj gönderen Salih »

Selam,

Bende 1 tane database ve 1 tane transaction var, isin basinda database i aciyorum, programdan çıkarken de kapatıyorum, her şey gayet güzel çalışıyor hocam.
Bir de şu yazıya göz atın isterseniz, özellikle yazıdaki son mesajlara :
viewtopic.php?t=16616&postdays=0&postor ... g&start=15
Sevgi, Saygı.....
Cevapla