Bde Transactions işlemleri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Bde Transactions işlemleri

Mesaj gönderen bgoktas »

Merhaba arkadaşlar, bde ile transaction işlemi yapmam gerekiyor. Bu konuda tecrübesi olanların yardımları için şimdiden teşekkürler.

Danışmak istediğim mesele şu :
try
if not AnaForm.Database1.InTransaction then ANAForm.Database1.StartTransaction;
ANAForm.Database1.TransIsolation:=tiReadCommitted;
yilsonugirisislemleri;
yilsonucikisislemleri;
giriscikisfislerinikapat;
ANAForm.Database1.Commit;
except
ANAForm.Database1.Rollback;
end;
Burada yılsonugirişişlemleri, yilsonucikisislemleri ve giriscikisfislerinikapat birer procedure. Ben deneme amaçlı 2. procedure'da bir exception oluşturuyorum ve ANAForm.Database1.Rollback işlemini yapıyor. DB ye bakıyorum , ve gerçekten execsql yaptığı hiçbirşeyi db'ye yansıtmamış.
Bu yaptığım yöntem yeterlimidir? yoksa başka dikkat etmem gereken hususlar var mı?
Cevaplar ve yorumlarınızı bekliyorum.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
Evet kullandığınız yapı yeterli ve doğru bir yöntem, isolationlevel i her seferinde ayarlamanıza gerek yok sadece bir defa IDE den ayarlamanız yeterlidir.
Eğer MySQL 4.0.18 ve öncesi bir VT sunucusu kullanıyorsanız önemli bir özelliği göz ardı etmeyin, GLOBAL VARIABLE lar arsındaki AUTO_COMMIT özelliğini 0 yapmalısınız varsayılan 1 olarak gelir ve sizin transactionlarla ilgilenmez.

Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Merhabalar, cevap için teşekkürler
DB:Sql Server.
Şimdi yaptığım bir testte;
Query ile xxx tablosuna bir değişiklik yaptıktan sonra , aynı tabloya bir update işlemi daha yapmam gerekiyor. 2. update Tquery ' sini execsql yaparken program kilitleniyor. Herhangi bir hata mesajıda vermiyor :?:
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Kullandığınız database nedir?
Volkan KAMADAN
www.polisoft.com.tr
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Database:Sql Server
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Pardon yukarda yazmışsınızda gözümden kaçmış,
Peki bu yaptığınız UPDATE işlemlerini tek tek çalıştırdığnızda sorun oluyormu?
Volkan KAMADAN
www.polisoft.com.tr
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Bu query'ler kod içerisinde sırayla çalışıyor. Queryler tek tek çalışıyor. Veyahut şu anda çalışmayanı 1. update haline getirdiğimde bu sefer diğerini çalıştırmıyor. Acaba TDatabase ' de mi birşeyleri ayarlamak gerekiyor...
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Bu bahsettiğiniz query ler aynı TDatabase e bağlılar değilmi?
Eğer farklı TDatabase lere bağlıysalar siz birinden transcation u commit etmeden aynı tabloda başka seanslar beklemede kalırlar.
Volkan KAMADAN
www.polisoft.com.tr
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Evet aynı database'e bağlılar. Hatta aynı queryle yapıyorum :)
En son yaptığım teste göre. Bir tabloya bir şey update yaptıysam o tabloya select bile atamıyorum. :roll:
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Bu MSSQL e özel bir durum galiba, hiç tecrübem olmadı yanlış olmasın.
BDE ile MySQL üzerinde çalışmam oldu bolca Transaction kullandım hiç sorun yaşamadım böyle.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

with lockla falan kilitlemiş olabilirmisin tablodaki herhangi bir kaydı, bde bunu kaldıramıyor olabilir
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1526
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Transaction içine alınmış kayıtlara yine aynı transaction daki bir sql den ulaşılabilir, aksi takdirde time out a düşersiniz.
Update yaptığınız query nin açılan transaction a dahil olduğunu kontrol edin.
Resim

..::|YeşilMavi|::..
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

mege yazdı:with lockla falan kilitlemiş olabilirmisin tablodaki herhangi bir kaydı, bde bunu kaldıramıyor olabilir
metin, database 'e sadece ben ulaşıyorum. Kayıdı kilitliyorsa bde kilitliyordur ?
lazio yazdı:Transaction içine alınmış kayıtlara yine aynı transaction daki bir sql den ulaşılabilir, aksi takdirde time out a düşersiniz.
Update yaptığınız query nin açılan transaction a dahil olduğunu kontrol edin.
aynı query'nin sql.text'ini değiştirerek çekiyorum query'i
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

çok vaktini alacağını sanmıyorum, ado connection koy bide query trans. falan aynısını ado üzerinden dene bi, böylece bde mi sakat anlaşılır.
.-.-.-.-.-.-.-. ^_^
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

deneyip cevabı yazarım
teşekkürler...
Cevapla