Étant donné:comportement des transactions de MySQL/PHP
mysql_query("START TRANSACTION");
mysql_query("UPDATE foo = 'bar'");
die();
die()
arrête la transaction avant que je puisse COMMIT
ou ROLLBACK
. En regardant mes tables, il apparaît que la mise à jour n'a pas lieu, mais si j'exécute des requêtes plus tard dans un autre script, est-ce qu'elles font toujours partie de cette transaction initiale? La transaction est-elle encore 'ouverte' jusqu'à ce que j'aie COMMIT
ou ROLLBACK
?
Selon http://www.php.net/manual/en/function.mysql-close "L'utilisation de mysql_close() n'est généralement pas nécessaire, car les liens ouverts non persistants sont automatiquement fermés à la fin de l'exécution du script. " Puisque die() termine l'exécution du script, je suppose que cela signifie que la connexion à la base de données est fermée? – Matthew
Et malheureusement, je n'utilise pas mysqli, donc je ne peux pas faire plusieurs requêtes à la fois. – Matthew
C'est exact, je me demandais juste si vous alliez vraiment être complètement fidèle à propos de toujours mourir après votre transaction a été ouverte. Je veux dire, à quelle fréquence vas-tu vraiment mourir() dans un scénario réel? C'est pourquoi j'ai mentionné que vous ne devriez probablement pas compter sur die() pour conclure une transaction pour vous. –