phpbar.de logo

Mailinglisten-Archive

Re: Table locking ...
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Table locking ...



Elmar Haneke wrote:
> 
> > Wofür brauchst du denn das? Der Datenbankserver kümmert sich drum, daß
> > es keine Probleme mit konkurrierenden Zugriffen gibt, die Du z.b. als
> > CGI-Programmierer mit "normalen" Dateien verhindern mußt.
> 
> Wenn ein "Zugriff" aus mehreren SQL-Anfragen besteht, können die sich
> schon überlappen, z.B.
> 
> 1. Schritt: Auslesen der größten ID-Nummer
> 2. Schritt einfügen mit der nächstgrößeren ID
> 
> Wenn sich da ein zweiter Prozeß dazwischenschummelt, stimmt das
> Ergebnis nichtmehr, man erhält zwei Eintragungen mit der gleichen ID
> 
> A liest ID
> B liest ID
> A schreibt mit ID+1
> B schreibt mit ID+1
> 
> Elmar

Hallo Elmar

Das obige Beispiel lässt sich auch mit AUTO_INCREMENT erledigen.
Aber wenn man referentielle Integrität benötigt, sollte man LOCK verwenden.
Beispiel:
Man hat zwei Tabellen, wobei jeder Eintrag in der ersten Tabelle einen Verweis auf einen Eintrag in der zweiten Tabelle hat. Wenn
man nun einen Eintrag in der zweiten Tabelle löscht, muß man auch alle Einträge in der ersten Tabelle löschen, die auf diesen
verweisen. Sollte jemand zwischen diesen beiden SQL-Befehlen auf die beiden Tabellen zugreifen, erhält er natürlich nur Schrott.
Deshalb Verwendung von LOCK/UNLOCK.

Tschau
Christian


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive