Salve a tutti,
ho un'applicazione di gestione magazzino e ho la necessità di utilizzare i lock su alcune tabelle mysql (tbmovimenti, tbgiacenza, ecc...) e di eseguire, all'interno del blocco lock....unlock, diverse query (select, update e delete) sulla una delle relative tabelle (tbmovimenti): in fase di lock quante volte devo indicare la tabella in questione?Leggevo che occorre utilizzare diversi alias?
In tal caso quale è la sintassi?

Ho provato ad implementarle ma ogni volta che eseguo lo script il server sembra che si blocca o resta in attesa

Il codice è simile al seguente

$sqllock="LOCK TABLES tbgiacenze WRITE, tbmovimenti WRITE,tbmovimenti AS tbmovi1 WRITE, tbmovimenti AS tbmovi2 WRITE, tbmovimenti AS tbmovi3 WRITE, tbmovimenti AS tbmovi4 WRITE, tbprotocollo WRITE, tbsegnalazioni WRITE";

//ciclo for per scorrere gli articoli da scaricare
for($i=0; $i<$numeroarticoli; $i++)
{

//calcolo la giacenza in prima di effettuare l'operazione di scarico
$qiacecenzacalcolataprima=$this->calcolagiacenzaarticolo("tbmovi1,$idarticolo[$i],$datascadenza[$i],$confezione[$i], $posizione[$i], $unitamisura[$i]);

if (($qiacecenzacalcolataprima >=0) && ($qiacecenzacalcolataprima >=$quantitascaricata)){

$sqlinsert="INSERT INTO tbmovimenti VALUES
(NULL,\"U\",\"$datamovimentoENG\",\"$protocollo\", \"" . $idanagrafica . "\",\"" . $idarticolo[$i] . "\",\"" . $idaccount . "\",\"" . $unitamisura[$i] . "\",\"$quantitascaricata\",\"" . $confezione[$i] . "\",\"\",\"0\",\"$nomefile\",\"" . $produttore[$i] . "\",\"" . $datascadenza[$i] . "\",\"" . $posizione[$i] . "\",\"$flag\",\"$datains\",\"$mittentedestinatario \",\"$idcausale\")";

$esito=@mysql_query($sqlinsert,$conn);

if (@mysql_affected_rows($conn) == 1)
{
$idmovimento=mysql_insert_id($conn);

//per eccesso di zelo ricalcolo la giacenza dopo aver effettuato l'operazione di scarico
//per verificare se ci sono problemi di giacenza ed in tal caso elimino il movimento effettuato

$qiacecenzacalcolatadopo=$this->calcolagiacenzaarticolo("tbmovi3","tbmovi4",$idar ticolo[$i],$datascadenza[$i],$confezione[$i], $posizione[$i], $unitamisura[$i]);


if ($qiacecenzacalcolatadopo < 0)
{
$sqldelete="delete from tbmovimenti as tbmovi5 where IdMovimento=$idmovimento";
$esito=@mysql_query($sqldelete);

$report .="Operazione di scarico annullata per l'articolo " . $descrizioneapp . ": la giacenza disponibile risulta inferiore alla quantita' da scaricare
";
}
else
{
// aggiorno una tabella di appoggio
$this->aggiornagiacenza($conn);
$recordcaricati += 1;
}

}
else
{
$report.="Operazione di scarico annullata per l'artitolo " . $descrizioneapp . ": si è verificato un errore in fase di registrazione.
";
}
}
else
{
$report.="Si è verificato un errore in fase di recupero dati dell'articolo " . $descrizioneapp . "
";
}
}
}
else
{
#$report .= "Attenzione, operazione di scarico annullata per l'artitolo " . $descrizione[$i] . ": la quantita' indicata non e' numerica
";
}

}
//qui è terminato il ciclo for e sblocco le tabelle

$sqlunlock="UNLOCK TABLES";
$esitounlock=@mysql_query($sqlunlock,$conn);


Grazie.
David.