sql >> Databasteknik >  >> RDS >> Mysql

Begår mysql_query allt

Det gamla mysql-tillägget har inte funktioner specifikt för transaktionskontroll, men du kan utfärda SQL-satser för att göra vad du vill.

Du kan implicit stänga av autocommit under en transaktions varaktighet helt enkelt genom att starta en transaktion:

mysql_query("START TRANSACTION");

Så snart du COMMIT eller ROLLBACK, kommer autocommit-läget att återgå till standardläget.

mysql_query("COMMIT"); // or ROLLBACK

Du kan stänga av autocommit för hela sessionen genom att ställa in en sessionsvariabel:

mysql_query("SET autocommit=0");

Eller ändra det globalt på din MySQL-instans så att det ändrar standard för alla sessioner:

mysql_query("SET GLOBAL autocommit=0");

Eller ställ in den för att ändra den globala inställningen vid start av MySQL-tjänsten genom att redigera /etc/my.cnf:

[mysqld]
autocommit=0

Om du använder MySQL 5.1 måste du göra detta lite annorlunda:

[mysqld]
init_connect='SET autocommit=0'

Du vet förmodligen redan, men det tål att upprepas att transaktioner bara betyder någonting om du använder InnoDB-tabeller. MyISAM-tabeller stöder inte transaktioner, så de är alltid autocommit oavsett dina inställningar. Samma sak med flera andra lagringsmotorer, inklusive MEMORY och CSV.




  1. MySQL lagrad procedur som accepterar sträng med flera parametrar

  2. Hur man kör .sql-fil i Oracle SQL-utvecklarverktyg för att importera databas?

  3. Varför kan jag inte skapa utlösare på objekt som ägs av SYS?

  4. Vilket är bättre sätt att skriva PHP-kod för att infoga data