Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive