22. januar 2004 - 09:53Der er
16 kommentarer og 1 løsning
Compare af to tabeller med nogle tilhørende problemer
Hej alle, Jeg har to tabeller Tabel1 og Tabel2. Som ser præcis ud til at starte med dvs de indeholder også samme data. På et tidspunkt vil jeg gerne addere en record til Tabel2 men det jeg rent faktisk gør er at jeg sletter alle records i tabellen og derefter indsætter dem igen i Tabel2 og det er for at have en bestemt rækkefølge. Det skal nævnes at tabel to har ingen referancer til andre tabeller i databasen dvs. jeg kan sagtens slette uden at rode noget til hvorimod Tabel1 har referencer til en masse tabeller så jeg kan ikke slette noget. Det jeg gerne vil have nu er at jeg vil have den samme rækkefølge som jeg har i Tabel2 i Tabel1. Problemet er hvordan får jeg lov til at ændre i Tabel1 uden at den begynder at klage over de referencer som bliver brugt i andre tabeller ? Kan jeg ændre oplysningerne og lave om i rækkefølgen og dermed opdatere de primære nøgler som bliver brugt i de andre tabeller i databasen ? Jeg ved ikke om i forstår hvad jeg mener men der er vigtigt for mig at oprette en rækkefølge i Tabel1 når jeg indsætter et nyt record. Den skal nemlig komme det rigtig sted.
Håber der er nogen der kan hjælpe mig muligvis fortælle mig hvordan jeg kan løse problemet.
En mulighed er at disable constraints til alle tabeller som referere table1, foretage opdateringen på tabel1 og derefter re-enable constraints. (Sidst nævnte ville jeg gøre med with check for at sikre at alting er i orden efter opdateringen) Alternativt kan du afvikle DBCC CHECKCONSTRAINT efter opdateringen for at sikre at integriteten er i orden ..
som du kan se så har jeg selvfølgeligt en primærnøgle. Hvis jeg nu skal indsætte en ny record som måske skal være mellem 44 og 45 så vil det rykke alle de andre en tal ned derfor skal referencerne til de andre tabeller være korrekte ellers laver den ged i det ik ?
kunne man lave muligvis noget cascade update på primary key til de andre tabeller så man får opdateret det hele rigtigt selvom primarykey id er ændret ? Jeg tror det er langt ude.
i starten ser alt fint ud men senere i forløbet vil der blivet adderet flere ting til Tabel1. Egentligt så har jeg ikke lavet Tabel2 men bare en tanke om det. Tabel1 er lavet og fungerer men jeg har bare det problem når jeg henter data at de skal være i den rækkefølge som jeg sætter dem ind. Når jeg kun sætter en record i Tabel1 vil den selfølgeligt får et nyt ID og stå nederst og dermed være sidst i listen når jeg SELECTER på tabellen. Der er derfor vigtigt at når jeg skal indsætte et nyt record så skal jeg genoprette hele listen igen så den nye record kommer den rigtige sted og ikke til sidst. Håber det gav en bedre forståelse.
Hmm det lyder som en mulighed men jeg skal lige tænke over det og se om der er nogle huller i det. Der skal så også laves en slags sletning og UPDATE på SortOrder hvis der bliver slettet en record midt i det hele ik ?
Jo, du vil fx slette den med ResourceID = 89 UPDATE Table1 SET Sortorder = Sortorder - 1 WHERE SortOrder > (SELECT SortOrder FROM Table1 WHERE ResourceID = 89)
DELETE FROM Table1 WHERE ResourceID = 89
Men er det vigtigt at der ikke er "huller" i talrækken?
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.