max() in Insert
Patrick
- datenbank
0 Rouven0 patrick
0 Sven Rautenberg
Hallo
Hab mal ne Frage:
Ich mache immer ne Abfrage Select MAX(id) FRom Datenbank
speicher das in ner Variablen und erhöhe diese um 1 und schreibe dann
Insert into Datenbank Values(DieVariable,....)
Kann man nicht direkt in dem insert befehl das "Max" raussuchen?
Patrick Müller
Hi,
vielleicht mit einem Subselect (also auf gar keinen Fall in MySQL), aber ich denke fast nicht, dass das geht. Muss es unbedingt die nächste Nummer sein, oder geht es nur um eine eindeutige Zahl?
Falls ja, dann sei dir ein AutoIncrement oder AutoWert vorgeschlagen...
MfG
Rouven
Hallo
Irh schreibt da beide von einem Autoincrement wie geht denn das?
PAtrick Müller
Moin!
Ich mache immer ne Abfrage Select MAX(id) FRom Datenbank
speicher das in ner Variablen und erhöhe diese um 1 und schreibe dann
Insert into Datenbank Values(DieVariable,....)
Benutzt du MySQL? Dann gibt es die wunderbare (und fehlerfrei funktionierende) Möglichkeit, deine ID-Spalte als "auto_increment" zu definieren - dann zählt sie nämlich automatisch hoch.
Deine jetzige Variante hat das Problem, dass sie fehleranfällig ist. Angenommen, zwei Prozesse greifen gleichzeitig auf die Datenbank zu. Beide kriegen nacheinander das gleiche Ergebnis für die maximale ID, und beide senden den neuen Datensatz dann mit derselben ID in die Datenbank.
Um das zu verhindern, muß die ID-Spalte dann zumindest einen Unique-Index haben.
- Sven Rautenberg