08. juli 2004 - 21:33Der er
10 kommentarer og 1 løsning
Fyld huller i MySQL først
Jeg bruger et script hvor man kan tilføje/slette og ændre et navn. Alt dette foregår fra en MySQL tabel. Databasen består af et navne felt og et id felt.
Det der plager mig er, at auto_increment ikke fylder de ID felter som er slettet ud, den ligger bare et tal oven på.
Eks. Navn ID ---- -- Eks1 1 Eks2 2 Eks3 3
Det fungere fint nok i starten, men ligeså snart jeg sletter en går det galt, hvis jeg sletter "Eks1" og tilføjer "Eks4" kommer det til at se således ud:
Navn ID ---- -- Eks2 2 Eks3 3 Eks4 4
Det er lidt dumt i forhold til de ting jeg skal bruge det til. Men kan ikke rigtig overskue en mulighed for at få "tilføj scriptet" til at undersøge om der er ledige pladser. Hvis der er skal den selvfølgelig placeres der, hvis der ikke findes tomme pladser skal den selvfølgelig bare ligge sig som det højeste nummer + 1.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Lav et nyt felt fx. pladsnummer, Sæt scriptet til at undersøge hvor mange records der er i databasen og der efter først tjeck om 1 er der og bagefter 2 osv. indtil den finder en som ikke er der, så lav din insert.
Auto_increment er en autonummering som er "dum" den logger hvor den er nået til og ligger 1 til.
Du hverken kan eller skal bruge det konkrete nummer i en autonummerering til noget, ud over at de er forskellige. Og måske også, at jo højere nummer, jo nyere. Men et dato/tid-felt er nok at foretrække i det tilfælde.
det er ikke noget du skal være ked af. det er noget du skal være glad for. Hvis MySQL sådan fyldte hullerne ud ville det være noget nær umuligt at finde fejlen hvis du glemmer at slette faderløse rækker i andre tabeller der har fremmednøgler til den der.
Hvis du absolut vil så er det muligt at omnummerere efter en sletning, men det er rimeligt bøvlet og kræver adskillige MySQL queries.
Jeg tror desværre bare jeg er nød til det. Hvis i ser dette sprøgsmål: http://www.eksperten.dk/spm/517648 så vil der gå kage i det, hvis tallende ikke ligger lige efter hinanden.
Tror at arne_v's løsning nr. 3 vil være den bedste, behøver jo ikke mange rækker, da jeg næppe tror min hjemmeside vil komme op på mere end 100 menu punkter :)
Men jeg behøver lidt uddybning af "lav en tabel allnums med et integer felt n"
Nu har jeg siddet og kæmpet lidt, men har svært ved at komme med et ordenligt bud på hvordan jeg kan omskrive denne: mysql_query("update $table_tekst set prio ='$from' WHERE navn ='$ud_to[navn]'"); så den passer til det nye felt.
Da jakoba og erikjacobsen ikke har svaret, og jeg ved i er særdeles aktive herinde, snupper jeg point selv. I er velkommen til at skrive, hvis i alligevel skulle få lyst til en del af kagen :0)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.