sql >> Database teknologi >  >> RDS >> Mysql

Begår mysql_query alt

Den gamle mysql-udvidelse har ikke funktioner specifikt til transaktionskontrol, men du kan udstede SQL-sætninger for at gøre, hvad du vil.

Du kan implicit deaktivere autocommit for varigheden af ​​en transaktion blot ved at starte en transaktion:

mysql_query("START TRANSACTION");

Så snart du COMMIT eller ROLLBACK, vil autocommit-tilstanden vende tilbage til standard.

mysql_query("COMMIT"); // or ROLLBACK

Du kan slå autocommit fra for hele din session ved at indstille en sessionsvariabel:

mysql_query("SET autocommit=0");

Eller skift det globalt på din MySQL-instans, så det ændrer standarden for alle sessioner:

mysql_query("SET GLOBAL autocommit=0");

Eller indstil den til at ændre den globale indstilling ved opstart af MySQL-tjenesten ved at redigere /etc/my.cnf:

[mysqld]
autocommit=0

Hvis du bruger MySQL 5.1, skal du gøre dette lidt anderledes:

[mysqld]
init_connect='SET autocommit=0'

Du ved det sikkert allerede, men det tåler at gentages, at transaktioner kun betyder noget, hvis du bruger InnoDB-tabeller. MyISAM-tabeller understøtter ikke transaktioner, så de er altid autocommit uanset dine indstillinger. Det samme med flere andre lagringsmotorer, inklusive MEMORY og CSV.




  1. Automatisering af sikkerhedskopier ved hjælp af begivenhedsplanlægning

  2. SQL vælg de elementer, der matcher array og vis dem i en række

  3. MySql-fejl:1364 Feltet 'display_name' har ikke standardværdi

  4. mysql forespørgsel værelse tilgængelighed