Avatar billede jonas_j Nybegynder
26. maj 2004 - 10:36 Der er 10 kommentarer og
1 løsning

hjælp til LOCK af table..

Jeg skal i en UPDATE af tabellen "raavarelager" have lavet en LOCK på tablen, før den laver UPDATE'en. Det skal laves pga. af transaktion management hvor tabellen "raavarelager" opdateres fra flere forskellige .php sider på sammen tidspunkt. Jeg skal have hjællp til at konstruere en if-sætning, som går ind og tjekker om tablen er LOCKED, og hvis den skal UPDATE'en udføres 0.5 millisekund senere ? Kan nogen hjælpe. Jeg har selv konstrueret følgende kode:

$sql = mysql_query (LOCK TABLES plade_raavarelager WRITE)
$sql = mysql_query ("UPDATE plade_raavarelager, pladetype SET fysisk_beholdning=(fysisk_beholdning+$antal) WHERE
pladetype.pladetype_id=$plade AND ladetype.plade_raavarelager_id = plade_raavarelager.plade_raavarelager_id");
$sql = mysql_query (UNLOCK TABLES)
Avatar billede chries Nybegynder
26. maj 2004 - 10:41 #1
hvorfor vil du tjecke om tabellen er locked ?
Avatar billede jonas_j Nybegynder
26. maj 2004 - 10:58 #2
Den kan jo ikke udføre UPDATE'en fra en anden .php side, hvis tabellen er LOCKED
Avatar billede chries Nybegynder
26. maj 2004 - 11:03 #3
$sql = mysql_query (LOCK TABLES plade_raavarelager WRITE);

returner ikke før den har lås på tabellen.

side1: lås tabel write
side1: update noget...
side2: lås tabel write (tabel allerede låst, venter)
side1: update noget mere...
side1: unlock tabel
side2: får lås
side2: updater...
Avatar billede jonas_j Nybegynder
26. maj 2004 - 11:12 #4
ja præcis sådan!
Avatar billede jonas_j Nybegynder
26. maj 2004 - 11:12 #5
men skal de ikke tjekke om der allerede er en lock på tabellen først ?
Avatar billede chries Nybegynder
26. maj 2004 - 12:14 #6
mysql håndter selv hvis en tabel er allerede låst. Så kommer lock queryen i vente position.

lock queryen returner ikke før den har lås på tabellen.
Avatar billede jonas_j Nybegynder
26. maj 2004 - 12:28 #7
oki... det er smart. Kan du ikke skrive hvordan jeg kontreat skal formulere min SQL kommandoer ud fra det kode jeg har lavet ovenover. Så er point'ene dine !!!
Avatar billede chries Nybegynder
26. maj 2004 - 12:44 #8
sådan ca:

mysql_query ("LOCK TABLES plade_raavarelager WRITE, pladetype READ") or die ("Error: ". mysql_error());

mysql_query ("UPDATE plade_raavarelager, pladetype SET fysisk_beholdning=(fysisk_beholdning+$antal) WHERE pladetype.pladetype_id=$plade AND ladetype.plade_raavarelager_id = plade_raavarelager.plade_raavarelager_id") or die ("Error: ". mysql_error());

mysql_query ("UNLOCK TABLES") or die ("Error: ". mysql_error());
Avatar billede jonas_j Nybegynder
26. maj 2004 - 12:47 #9
OKI.. tak nice
Avatar billede jonas_j Nybegynder
26. maj 2004 - 12:47 #10
Lave lige et svar
Avatar billede chries Nybegynder
26. maj 2004 - 12:49 #11
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester