Sākumlapa › Forumi › Mājas lapu izstrāde › Servera puse (php, java, ruby, perl, python) › SELECT un INSERT mysql race condition
$laiks = $mysqli->query(”SELECT laiks FROM tabula1 WHERE bla bla”);
if $laiks mazāks kā ZZZ
{
Insertojam tabulā2;
Insertojam tabulā1 jaunu laiku.
}
Bet te sanāk race, ja 2 pieprasa $laiks (starp select un insert)? Kā izsargāties, lai neievietotu 2x?
Piem.
$pdo = new Pdo(”
$pdo->beginTransaction();
try
{
$stmt = $pdo->prepare(”INERT INTO tabula1(laiks) VALUES (:laiks)”);
$stmt->execute(array(’laiks’ => $jaunaVertiba));
}
catch(PDOException $e)
{
//ieks $e ir mysql kļūda, jo laukam “laiks” ir unique index, vari izdrukāt $e->getMessage() kļūdu, kuru nevajag, be tā vietā atsaucam izpildi
$pdo->rollback();
// paziņojam lietotājam, ka jau ir insertots vai aizņemts
return ‘kļūda’;
}
//savādāk commitojam
$pdo->commit();
Preses relīzes