Önceki sorgularda otomatik olarak START TRANSACTION
COMMIT
olduğunu fark ettim. Bu nedenle ve tüm işlemin sonundan önce çağrılan birkaç saklı yordamım olduğu için, bir START TRANSACTION
içeride olup olmadığımı kontrol etmem gerekiyor. Kılavuzun okunması Otomatik görüşmenin, START TRANSACTION
içinde yanlış olarak ayarlandığını anladım, ancak böyle görünmüyor. I = KAPALI özdevinimli edilecek ikinci beklenen süreMySQL - START TRANSACTION etkin olduğunda nasıl kontrol edilir
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_transaction`()
BEGIN
show session variables like 'autocommit';
start transaction;
show session variables like 'autocommit';
COMMIT;
show session variables like 'autocommit';
END
Fakat her show session variables like 'autocommit';
gösteri özdevinimli = AÇIK: Ben aşağıdaki yordamı yazdım.
START TRANSACTION
'un içinde olup olmadığımı nasıl kontrol edebilirim?
START TRANSACTION
gerektiren bir yordamıma sahip olduğum için bu denetimi gerçekleştirmem gerekiyor, daha sonra START TRANSACTION
'a gereksinim duyan yordamı2 çağırır. Ama benim de prosedür 2'yi çağırmak için gereken farklı bir prosedür farklı bir prosedürü olduğunu varsayalım ama bu durumda farklı_prosedürü START TRANSACTION
'u kullanmaz. Bu senaryoda, START TRANSACTION
'un başlatılıp başlatılmadığını kontrol etmek için prosedür 2'ye ihtiyacım var. Umarım bu yeterlidir.
Teşekkür https://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html itibaren
Teşekkür kullanabilirsiniz, bu bir çözüm olabilir, ama çirkin. "Start transaction" içinde olup olmadığınızı kontrol etmek için temiz bir yol olması gerektiğine inanıyorum –
@Stefano Giacone 'SELECT @@ autocommit' denediniz mi? –
Evet, aynı. SET autocommit = 0; çözüm gerçekten korkunç, eğer mümkünse daha iyi bir tane tercih ederim ... –