Avatar billede visto Professor
07. august 2017 - 21:17 Der er 3 kommentarer og
1 løsning

Kan ikke gennemtvinge referentiel integritet

I en relationsdatabase (Access 2003) kan jeg ikke gennemtvinge referentiel integritet fra en tabel (A) til én af fem tabeller (B), som er niveauet under A; ingen problemer med de fire andre undertabeller.
Jeg har sikret mig, at der ikke er poster i tabel B, som ikke modsvares af en post i tabel A. Relationsfeltet i tabel A er af typen Autonummerering, mens relationsfeltet i tabel B er Tal > Langt heltal. Det er samme typer felter, der forbindes for de fire andre tabellers vedkommende, hvor det er muligt at gennemtvinge referentiel integritet.

Hvad kan jeg have overset, for at betingelserne for referentiel integritet mellem tabel A og B skal være opfyldt?
Avatar billede Jørgen Kirkegaard Professor
08. august 2017 - 16:28 #1
I stedet for at gætte og bede om flere oplysninger, tror jeg, at det er lettere at prøve følgende i en kopi af databasen, indtil du evt. finder en løsning. (Du har sikkert prøvet noget af det):

Prøv at komprimere og reparer databasen.
Prøv at slette alle data i 'undertabellen'
Slet alle data i hovedtabellen.
Slet alle irrelevante felter i undertabellen.
Slet alle irrelevante felter i hovedtabellen.
Gør tilsvarende i én af de undertabeller, som virker.
Du burde på et tidspunkt kunne se en forskel og derfra arbejde dig frem til løsningen igen, ellers skriv igen.
Avatar billede visto Professor
08. august 2017 - 18:40 #2
Mange gode ideer, tak for dem. Dem vil jeg afprøve.
Avatar billede visto Professor
08. august 2017 - 20:45 #3
Fejlen er fundet. Der var én post (ud af små 10.000), som der ikke fandtes dækning for i hovedtabellen. Troede ellers det var tjekket ved at sammenholde relations-ID numre i de to tabeller. Jeg fandt fejlen ved at slette først alle poster i undertabellen. Herefter kunne referentiel integritet oprettes. Og så var det jo blot (i nye kopier af databasen) at slette i første omgang 500 poster ad gangen, og når gav fejl ved forsøg på at oprette referentiel integritet, så slette mindre portioner indenfor det fundne fejlområde, indtil det kunne snævres ind til én post.
Tak for hjælpen!
Avatar billede Jørgen Kirkegaard Professor
09. august 2017 - 16:12 #4
S'lidt da. Jeg skal ikke drille med, at en "NOT IN.." kunne have gjort det. Det ville heller ikke have været lisså sjovt :-D
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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