sql >> Database >  >> RDS >> Mysql

Een MySQL INNODB-rij vergrendelen in PHP

$mysqli->autocommit(FALSE);
$mysqli->query("BEGIN;");
$mysqli->multi_query("SELECT id FROM links WHERE id > (SELECT value FROM meta WHERE name='scan' FOR UPDATE) LIMIT 1000;UPDATE meta SET value=value+1000 WHERE name='scan';");
$mysqli->commit();

Het is een complexe kwestie; vergrendelings- en transactieniveaus, maar de magie hierboven was de BEGIN uitspraak. Zonder dit liep elke instructie op zijn eigen transactieniveau en de FOR UPDATE slot werd te vroeg ontgrendeld.



  1. Hoe open ik mijn MySQL op mijn Raspberry Pi voor externe / externe verbindingen?

  2. Verbinding maken met een externe database vanaf een localhost-computer met behulp van mysql en PHP

  3. SQL-query om de som van alle kolomwaarden in de laatste rij van een resultatenset te krijgen, samen met rijsom (groeperen op)

  4. Het minimaliseren van de impact van het verbreden van een IDENTITEIT-kolom - deel 4