Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bestätigt mysql_query alles

Die alte mysql-Erweiterung hat keine Funktionen speziell für die Transaktionskontrolle, aber Sie können SQL-Anweisungen absetzen, um zu tun, was Sie wollen.

Sie können Autocommit implizit für die Dauer einer Transaktion ausschalten, indem Sie einfach eine Transaktion starten:

mysql_query("START TRANSACTION");

Sobald Sie COMMIT oder ROLLBACK ausführen, kehrt der Autocommit-Modus zum Standard zurück.

mysql_query("COMMIT"); // or ROLLBACK

Sie können Autocommit für Ihre gesamte Sitzung deaktivieren, indem Sie eine Sitzungsvariable setzen:

mysql_query("SET autocommit=0");

Oder ändern Sie es global auf Ihrer MySQL-Instanz, sodass es die Standardeinstellung für alle Sitzungen ändert:

mysql_query("SET GLOBAL autocommit=0");

Oder stellen Sie es ein, um die globale Einstellung beim Start des MySQL-Dienstes zu ändern, indem Sie /etc/my.cnf:

bearbeiten
[mysqld]
autocommit=0

Wenn Sie MySQL 5.1 verwenden, müssen Sie dies etwas anders machen:

[mysqld]
init_connect='SET autocommit=0'

Sie wissen es wahrscheinlich bereits, aber es muss wiederholt werden, dass Transaktionen nur dann etwas bedeuten, wenn Sie InnoDB-Tabellen verwenden. MyISAM-Tabellen unterstützen keine Transaktionen, daher werden sie immer automatisch festgeschrieben, unabhängig von Ihren Einstellungen. Das Gleiche gilt für mehrere andere Speicher-Engines, einschließlich MEMORY und CSV.