Veröffentlicht 16. Dezember 200222 j Hi ! Habe eine stinknormale Tabelle in MySQL, deren erste Spalte einen Index enthält, natürlich mit automatischer Nummerierung. Jetzt habe ich mal probehalber ein paar Datensätze eingefügt und anschließend wieder gelöscht. Die Tabelle ist quasi leer. Wenn ich nun wieder einen Datensatz einfüge, startet der Index auf einmal mit der Nummer 11. Sollte er hier nicht besser mit der Nummer 1 wieder beginnen? Gibt es eine Möglichkeit, MySQL mitzuteilen, dass er wieder bei 1 anfängt? Hommling
16. Dezember 200222 j Hallo nochmal! Habe schon mal bei google weitergesucht und die Antwort gefunden! Hat sich erledigt! Hommling:marine
16. Dezember 200222 j Ich hoffe die gefundene Antwort lautet: Finger weg vom Primärschlüssel! Der dient nämlich zur eindeutigen Identifizierung eines Datensatzes. Solange du nicht 100%ig weisst, das kein anderer Datensatz noch auf den gelöschten Datensatz verweist, kannst, sollst und darfst du die ID nicht neu vergeben. Sonst kann aus Antibiotika, Buttersäure werden. Gruß Jaraz
17. Dezember 200222 j Es ist auch immernoch schoen seinen Loesungsweg zu posten wenn man ihn gefunden hat, damit andere Leute fuer die gleiche nicht noch einen Thread aufmachen muessen. (Was sie ja ehh immer tun ).
17. Dezember 200222 j Wie schon erwähnt, sollte man sowas besser lassen. Sofern es aber dennoch gewollt ist, dürfte ein "DELETE FROM table" helfen (auch bei einer leeren Tabelle).
17. Dezember 200222 j Es ist auch immernoch schoen seinen Loesungsweg zu posten wenn man ihn gefunden hat, damit andere Leute fuer die gleiche nicht noch einen Thread aufmachen muessen. (Was sie ja ehh immer tun ). O.K., O.K. -> Hummel, Hummel - Mors, Mors ! Habe folgende Lösung für das Problem: Die MySQL-Datenbank wird in meinem Fall von einem PHP-Skript angesprochen. Die gefundene Lösung besagt, dass es das Beste sei, über den MySQL-Befehl "MAX()" sich den Datensatz mit der höchsten ID raus zu fischen, diesen Wert um einen zu erhöhen und dann mit der jetzt richtigen ID den neuen Datensatz an zu legen. Das ist schon alles. Jedoch ist der Gedanke, scheinbar nicht benötigte Datensätze aus Tabellen zu löschen, ohne zu wissen, ob nicht ein Datensatz einer anderen Tabelle auf diesen zeigt, nicht verkehrt! Danke dafür, das hätte ich beinahe nicht in meine Überlegungen mit einbezogen. Dass mit den Threads, die sich quasi durch den Fragenden selbst beantworten, ist zugegeben ziemlich beknackt. Sorry dafür! Hommling
17. Dezember 200222 j Originally posted by hommling Die gefundene Lösung besagt, dass es das Beste sei, über den MySQL-Befehl "MAX()" sich den Datensatz mit der höchsten ID raus zu fischen, diesen Wert um einen zu erhöhen und dann mit der jetzt richtigen ID den neuen Datensatz an zu legen. Oh Oh, böse Falle. Man nehme den Fall an, du machst MAX(), bekommst den Wert, und bevor du den nächsten Datensatz eingefügt hast, macht ein anderer MAX(). Ihr habt also beide dieselbe ID und ein Datensatz geht verloren. Der autoincrement Mechanismus hat schon seinen Sinn und seine Berechtigung. Gruß Jaraz
17. Dezember 200222 j Hihihi! VERFECHTER DES AUTO_INCREMENTS: VEREINIGT EUCH !!! Danke für den Hinweis, jedoch geht es in meinem Fall nur um eine Userin, die Zugriff auf die DB hat. Somit ist es Dein Beitrag hinfällig. Trotzdem Danke! Habe verstanden, was Du mir sagen wolltest ! Hommling
17. Dezember 200222 j Originally posted by hommling Danke für den Hinweis, jedoch geht es in meinem Fall nur um eine Userin, die Zugriff auf die DB hat. Somit ist es Dein Beitrag hinfällig. Außerdem ist deine Lösung nicht gerade performant. Ja ja, ich weiss ist nur eine Userin, ob die nun 2 oder 30 Millisekunden wartet, ist auch egal. Wenn ich sowas im Code einer von mir bestellten Anwendung sehen würde, würde ich sofort das Softwarehaus wechseln. Ich hoffe es handelt sich nicht um dein Abschlussprojekt. Gruß Jaraz
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.