S.a arkadaşlar... mydac paletini kullanıyorum ve yukarıdaki . . . . yazan yerdeki kod bloğumda 10-15 defa sql cümleleri çalışıyor.(insert,update,delete,select) ama mesela bi hata oluştuğunda da onu EXCEPT ile yakalayıp RollBack olmasını sağlıyorum. F8 ile ilerleyip hatayı yakalıyorum ve FLogin.MyConnection1.Rollback; satırının çalıştığını görüyorum ve programı sağlıklı bir şekilde sonlandırıyorum. hemen tabloma bakıyorum ve hata werdiği yere kadar olan çalışmış sqllerin hiç biri rollback olmamış :S sizce nedendir. saygılar
Merhabalar ,
MySQL de InnoDB ve Falcon motorları haricindeki diğer motorlar Transactional değildir, muhtemelen sizin tablolarınız MyISAM bu sebepten Transaction desteklemiyor, tablolarınızın tiplerini basitçe InnoDB ye çevirebilir ve Transactional yapıyı kullanabilirsiniz.
vkamadan yazdı:Merhabalar ,
MySQL de InnoDB ve Falcon motorları haricindeki diğer motorlar Transactional değildir, muhtemelen sizin tablolarınız MyISAM bu sebepten Transaction desteklemiyor, tablolarınızın tiplerini basitçe InnoDB ye çevirebilir ve Transactional yapıyı kullanabilirsiniz.
İyi çalışmalar.
bunları nasıl yapıcam.. ben arayüz olarak navicat kullanıyorumda. mysql i parmaklamadım pek...
InnoDB ye nasıl çeviririm acaba.. yorumunuz için çok teşekkur ederim hocam
vkamadan yazdı:Merhabalar ,
MySQL de InnoDB ve Falcon motorları haricindeki diğer motorlar Transactional değildir, muhtemelen sizin tablolarınız MyISAM bu sebepten Transaction desteklemiyor, tablolarınızın tiplerini basitçe InnoDB ye çevirebilir ve Transactional yapıyı kullanabilirsiniz.
İyi çalışmalar.
bunları nasıl yapıcam.. ben arayüz olarak navicat kullanıyorumda. mysql i parmaklamadım pek...
InnoDB ye nasıl çeviririm acaba.. yorumunuz için çok teşekkur ederim hocam
ustam tamamdır. InnoDB ye çevirdim ama şimdide Transaction - Commit içindki hiç bi sql çalışmıyor.. yani roolback oluyormuş gibi davranıyor.. harbuki F8 le commit satırı çalışıo ama genede yemiyor :S
InnoDB ye çevirdim ama şimdide Transaction - Commit içindki hiç bi sql çalışmıyor.. yani roolback oluyormuş gibi davranıyor.. harbuki F8 le commit satırı çalışıo ama genede yemiyor :S
yönetim programlarından biriyle önce test ederek çalıştığından emin olun. delphideki kullandığınız companentlerin ayarını kontrol edin, auto transaction olabilir, yada iptal edilmiş olabilir.
yaptığın işlemlerin doğruluk ve yanlışlığını store procedure içinde yapmalısın
büyük ihtimalle varsayılan (default) değer bütün transaction işlemlerinin otomatik
olarak yapılandırılmasından kaynaklanıyor
SET AUTOCOMMIT=0; otomatiği kaldırır
SET AUTOCOMMIT=1; otomatik haline döndürür
örnek
SET AUTOCOMMIT=0;
BEGIN
select.....;
update ...;
delete....;
END;
COMMIT;
SET AUTOCOMMIT=1;
bu basit örnek istisnaları nasıl yakalayacağın ise detaylı konu