Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-ce que mysql_query valide tout

L'ancienne extension mysql n'a pas de fonctions spécifiques pour le contrôle des transactions, mais vous pouvez émettre des instructions SQL pour faire ce que vous voulez.

Vous pouvez implicitement désactiver la validation automatique pour la durée d'une transaction simplement en démarrant une transaction :

mysql_query("START TRANSACTION");

Dès que vous COMMIT ou ROLLBACK, le mode autocommit reviendra à la valeur par défaut.

mysql_query("COMMIT"); // or ROLLBACK

Vous pouvez désactiver la validation automatique pour l'ensemble de votre session en définissant une variable de session :

mysql_query("SET autocommit=0");

Ou modifiez-le globalement sur votre instance MySQL afin qu'il modifie la valeur par défaut pour toutes les sessions :

mysql_query("SET GLOBAL autocommit=0");

Ou configurez-le pour modifier le paramètre global au démarrage du service MySQL en modifiant /etc/my.cnf :

[mysqld]
autocommit=0

Si vous utilisez MySQL 5.1, vous devez procéder de manière légèrement différente :

[mysqld]
init_connect='SET autocommit=0'

Vous le savez probablement déjà, mais il convient de répéter que les transactions n'ont de sens que si vous utilisez des tables InnoDB. Les tables MyISAM ne prennent pas en charge les transactions, elles sont donc toujours validées automatiquement, quels que soient vos paramètres. Idem avec plusieurs autres moteurs de stockage, y compris MEMORY et CSV.