Jürgen: Mysql - LOCK notwendig?

Guten Tag,

an einer Stelle meines PHP-Scriptes werden Daten direkt hintereinander in zwei Tabellen geschrieben:
INSERT INTO tabelle1 xxx
INSERT INTO tabelle2 xxx

In beiden Tabellen ist ein Auto-Increment gesetzt, der jedem Datensatz eine Id zuweist. Die IDs der hintereinander eingefügten Datensätze sollen gleich sein.
Nun habe ich mir überlegt, dass im ungünstigsten Fall Folgendes passieren kann:
Der erste Insert-Befehl wird von Benutzer A veranlasst, es wird die Id 5 vergeben.
Der erste Insert-Befehl wird von Benutzer B veranlasst, es wird die Id 6 vergeben.
Der zweite Insert-Befehl wird von Benutzer B veranlasst, es wird die Id 5 vergeben.
Der zweite Insert-Befehl wird von Benutzer A veranlasst, es wird die Id 6 vergeben.
Jetzt stimmen die Ids der beiden Benutzer A und B in den beiden Tabellen nicht mehr überein.

Nun meine Fragen:
Wie wahrscheinlich ist ein solches Szenario?
Reicht es aus, im zweiten Insert-Befehl und in der zweiten Tabelle auf Auto-Increment zu verzichten und so vorzugehen:
INSERT INTO tabelle2 (id) VALUES ('".mysql_insert_id($verbindungshandle)."')?
Kann ich auf LOCK verzichten? Wenn nicht, wo habe ich diese wie (READ, WRITE?) zu setzen?

Danke.

Jürgen

  1. echo $begrüßung;

    Wie wahrscheinlich ist ein solches Szenario?

    Das ist irrelevant. Du kennst sicher die Story mit der Kuh und dem 1 Meter tiefen See.

    Reicht es aus, im zweiten Insert-Befehl und in der zweiten Tabelle auf Auto-Increment zu verzichten und so vorzugehen:
    INSERT INTO tabelle2 (id) VALUES ('".mysql_insert_id($verbindungshandle)."')?

    Die MySQL-Funktion LAST_INSERT_ID() und deren Pendant in PHP mysql_insert_id() liefern die letzte automatisch eingefügte ID verbindungsabhängig zurück. Parallel laufende Prozesse mit eigener Verbindung beeinflussen das Rückgabeergebnis nicht. Damit solltest du ohne LOCK auskommen.

    echo "$verabschiedung $name";