sql >> Database >  >> RDS >> Mysql

Legt mysql_query alles vast?

De oude mysql-extensie heeft geen functies specifiek voor transactiecontrole, maar u kunt SQL-instructies geven om te doen wat u wilt.

U kunt automatisch vastleggen voor de duur van één transactie impliciet uitschakelen door simpelweg een transactie te starten:

mysql_query("START TRANSACTION");

Zodra u COMMIT of ROLLBACK uitvoert, keert de autocommit-modus terug naar de standaardinstelling.

mysql_query("COMMIT"); // or ROLLBACK

U kunt automatisch vastleggen voor uw hele sessie uitschakelen door een sessievariabele in te stellen:

mysql_query("SET autocommit=0");

Of verander het globaal op uw MySQL-instantie, zodat het de standaard voor alle sessies verandert:

mysql_query("SET GLOBAL autocommit=0");

Of stel het in om de algemene instelling te wijzigen bij het opstarten van de MySQL-service door /etc/my.cnf te bewerken:

[mysqld]
autocommit=0

Als je MySQL 5.1 gebruikt, moet je dit iets anders doen:

[mysqld]
init_connect='SET autocommit=0'

Je weet het waarschijnlijk al, maar het is goed om te herhalen dat transacties alleen iets betekenen als je InnoDB-tabellen gebruikt. MyISAM-tabellen ondersteunen geen transacties, dus ze worden altijd automatisch vastgelegd, ongeacht uw instellingen. Hetzelfde geldt voor verschillende andere opslagengines, waaronder MEMORY en CSV.




  1. gem install mysql:kan de native extensie van gem niet bouwen (Mac Lion)

  2. Mijn php in mysql invoeren zonder te herhalen?

  3. MySQL LEFT JOIN 3 tabellen

  4. mysql GROUP_CONCAT duplicaten