# Auto Increment und nachträgliches einfügen



## Kirby.exe (25. Dez 2021)

Also bei uns im Projekt soll nun eine Funktionalität eingefügt werden welche ein Zwischenlager modelliert und dieses soll in der DB die ID 0 haben. Soweit so gut, aber es wird gewünscht, dass diese nachträglich angelegt werden kann via Command.

Nun frage ich mich wie das geht xD Die ID Spalte ist ein Auto-Increment. Ich hatte mit dem Query versucht ein Testlager mit ID 0 einzufügen, aber leider bekommt das Lager die „nächste“ Verfügbare ID (in meinem Fall 5):


```
INSERT INTO storage (id,name,max_x,max_y,max_z) VALUES (0,'Testlager',5,5,5);
```


----------



## Robert Zenz (25. Dez 2021)

Ja, genau dafuer ist ja Auto-Increment da, wenn kein Wert fuer die Spalte wird einer vergeben. Du kannst (vermutlich) die Zeile einfuegen und dann mit einem Update die ID aendern, dann ist aber diese eine ID auch weg (aber das sollte nichts machen).

Viel eher wuerde ich hinterfragen wieso ihr die ID "0" verwenden wollt dafuer, weil das wird euch alle Nase lang auf die Zehen krachen. Da waere entweder eine eigene Tabelle oder eine Spalte mit dem "Typ" des Lagers besser.


----------



## mihe7 (25. Dez 2021)

Um welches DBMS gehts überhaupt?


----------



## Kirby.exe (25. Dez 2021)

Also das DBMS ist MySQL, aber ich habe es nun anders gelöst. Ich filtere nun einfach nach dem Namen, welcher immer exakt „Zwischenlager“ sein wird


----------



## mihe7 (26. Dez 2021)

Gut, für die Nachwelt, s. auch https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_auto_value_on_zero


----------



## Robert Zenz (26. Dez 2021)

Kirby.exe hat gesagt.:


> Also das DBMS ist MySQL, aber ich habe es nun anders gelöst. Ich filtere nun einfach nach dem Namen, welcher immer exakt „Zwischenlager“ sein wird


Ist meiner Meinung nach auf jeden Fall die bessere Loesung (Views kann man ja auch noch bereitstellen und so weiter).


----------

