Zur Navigation

Problem mit auto_increment

Check ob ID in einer Tabelle schon vorhanden ist

1 AndiN (Gast)

Hallo Leute,
ich hänge vor folgendem Problem:

Ausgangssituation:
Ich habe eine SQL-Tabelle mit mehreren Daten-Feldern und einem ID-Feld (auto_increment).

Aufgabe:
Ich möchte eine zweite Tabelle erstellen welche vom Aufbau genau gleich ist wie Tabelle 1. Diese Tabelle besitzt also auch ein ID-Feld (auto_increment). Nun erstelle ich in der neuen Tabelle sowie in der alten Tabelle neue Einträge.

Problem:
Wie kann ich verhindern bzw. checken beim Anlegen neuer DB-Einträge, dass die per auto_increment angelegte ID in nur jeweils einer Tabelle vorkommt? Das ist deshalb wichtig da ich später die Daten aus beiden Tabellen über ihre IDs in ein Formular auslese, editiere und löschen möchte. Logischerweise darf es da dann keine doppelten IDs geben.

Beispiel:

Tabelle 1, IDs = 1 5 8 9 26

Wenn ich jetzt einen Eintrag mache inTabelle 2 muss das Script mitbekommen, dass in Tabelle 2 es schon die ID 1 gibt und den Eintrag in Tabelle 2 auf "ID = 2" setzen. Beim 2. Eintrag in die Tabelle 2 kann die ID normal auf "3" hochgezählt werden. Beim Eintrag der dann die ID=5 bekommen würde muss er wieder checken, dass die ID in der Tabelle 1 schon vorhanden ist und die ID in "6" ändern.

Ich könnte zwar in die Tabelle 2 in einem seperaten Feld eine zusätzle "Hey ich bin ein Entrag aus Tabelle 2"-Variable mit abspeichern, aber dann muss ich die bei jeder Operation mit den Datensätzen mitschleifen und abfragen. :(

Hat jemand eine Idee?

24.02.2009 12:09

3 AndiN (Gast)

Hi Jörg,

so sollte es klappen, ja.
Der Grund für die zwei Tabellen ist, dass die 1. Tabelle derzeit schon in Benutzung ist und ich die nicht mal eben "abschalten" kann da dort konstant Daten rein und rausgehen. Daten dort rausholen und in die neue Tabelle rüberziehen geht auch nicht da die Tabelle hoche Zugriffsraten hat.

Ich versuche es jetzt mal mit der o.g. Abfrage.

24.02.2009 14:59

4 Jörg Kruse

Wenn sehr oft Daten eingefügt werden, kann allerdings sehr leicht eine Race Condition auftreten. Wenn fast gleichzeitig Datensätze in Tabelle 1 und 2 eingefügt werden, kann es dann passieren, dass diese dieselbe ID erhalten.

24.02.2009 15:20

5 AndiN (Gast)

Danke für den Hinweis.
Ganz so schnell geht's dann doch noch nicht. :)
Sollte es mal soweit kommen, werde ich mit Timestamps als IDs arbeiten (müssen).

25.02.2009 02:58

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]