Avatar billede backupmand Nybegynder
10. september 2003 - 11:14 Der 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 ..
Avatar billede erikjacobsen Ekspert
10. september 2003 - 11:21 #1
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.
Avatar billede arne_v Ekspert
10. september 2003 - 11:25 #2
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.
Avatar billede backupmand Nybegynder
10. september 2003 - 11:32 #3
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.
Avatar billede arne_v Ekspert
10. september 2003 - 11:38 #4
Jeg ville leve med det. Fordi den bliver jo "forkert" igen lynhurtig.
Avatar billede backupmand Nybegynder
10. september 2003 - 11:52 #5
Så må jeg foretage nogle tricks i den anden ende, så det ikke kan komme an på hvilke numre der findes i db
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester