10. september 2003 - 11:14Der er
4 kommentarer og 1 løsning
(jdbc/mysql) Huller i database-problemet
g'dag, Jeg har brudt min hjerne med flg problematik: Jeg har en tabel hvor der bl.a. er en kolonne med numre, som inkrementeres for hver gang der kommer mere data i en ny række... 1 ... data, 2 ... data ... 3... data osv (you get the picture) .. nu sletter jeg eksempelvis rækken med 2 .. data, så kommer der et hul i databasen jeg ikke kan lide, hvor der efter 1 står 3 ... uden at skulle sætte al data ind påny i databasen (det vil jeg ikke, der må være en smartere facon) for at få numrene i orden, hvorledes ville jeg så gribe det an hvis jeg ville have en efter hinanden fortsættende numre, uden de der huller? Det er rigtigt nok, at den data der før havde id nr 3, nu skal blive nr 2 .. altså numrene flytter sig aldrig, men data gør ..
Nej, det skal du ikke. Hvis du nu har en anden tabel der refererer til nummer 3, så skal den jo også ændres. Derfor kan man ikke bare "omnummere" dem, men lære at leve med det.
Det er altså ret håbløst at forsøge at maintaine det.
Men hvis du vil gøre det så noget i retning af:
int n = 0 rs = stmt.executeQuery("SELECT * FROM tabel ORDER BY id"); while(rs.next()) { n++; if(rs.getInt("id") > n) { stmt2.executeUpdate("UPDATE tabel SET id=" + n + " WHERE id=" + rs.getInt("id")); } }
Du skal huske at lås edatabasen for eksklusiv adgang.
Og hvis du har fremmed nøgler der referere til dette felt skal de også opdateres.
erikj: Jo jeg havde forestillet mig at jeg skulle opdatere en anden tabel også, men i første omgang var det bare en. Øv, jeg må leve med det.
Hej Arne v .. he smart løsning egentlig!! Hvem skal jeg nu give point, idet jeg var forberedt på 1) at leve med det og 2) implementere en smart løsning.
Rigtigt ... lås af databasen, skal jeg huske og det med nøgler.
Så må jeg foretage nogle tricks i den anden ende, så det ikke kan komme an på hvilke numre der findes i db
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.