referentiele integriteit wordt niet afgedwongen

Status
Niet open voor verdere reacties.

CoenEnAccess

Gebruiker
Lid geworden
7 jun 2016
Berichten
44
Hallo, ik heb een vraag over het leggen van relaties tussen verschillende (MsAccess) databases. Ik heb database A en database B, waarbij ik de tabellen uit database A heb gekoppeld aan database B.

Ik kan nu ook prima queries maken waarbij ik dus de gegevens uit database A en database B met elkaar combineer.

echter: ik kan in database B gegevens invoeren waarbij de koppeling is gemaakt naar een tabel uit database A. Als ik een waarde invoer als verwijzende sleutel, maar deze waarde komt niet voor in database A, dan wordt de invoer wel geaccepteerd. Ik verwacht dat deze invoer met een foutmelding geweigerd wordt.

De relatie zelf is wel een 1-n relatie, maar zaken als referentiële integriteit afdwingen/gerelateerde records trapsgewijs bijwerken /gerelateerde records trapsgewijs deleten staan op greyed out. Ook het 1-n relatieteken wordt niet getoond. (zie foto).

Ik meen dit in het verleden vaker gedaan te hebben, waarbij het n iet mogelijk is om een niet-bestaande waarde in te voeren. Maar blijkbaar doe ik iets fout. Kan iemand me op weg helpen?
 

Bijlagen

  • UPLOADHELPMIJ.png
    UPLOADHELPMIJ.png
    375,8 KB · Weergaven: 58
Referentiële integriteit kan je alleen afdwingen tussen tabellen in dezelfde database. Je kan wel die controle zelf programmeren in je UI.
 
Dank voor je reactie NoellaG. Dus als ik het goed begrijp heb je als je data direct in de tabellen invoert, altijd het risico dat je verkeerde waarden kunt invullen in die zin dat er niet gekeken wordt of de invoer van een waarde voor een referentiele sleutel daadwerkelijk in de andere tabel voorkomt.

Ik snap dat je via UI (invoerschermen) data kan invoeren met behulp van drop down lijsten die de waarden halen uit database A, maar als je direct in de tabellen aan de gang gaat (zonder UI), dan is een check niet mogelijk?
 
Niet altijd, tussen 2 tabellen in dezelfde database kan je referentiële integriteit afdwingen en heb je dus wel die intrinsieke controle. Wat niet wegneemt dat gegevens direct in de tabel invoeren geen goed idee is. Daarvoor beschik je over veel meer mogelijkheden via het gebruik van formulieren.
 
Ok, dank voor je reactie...., dan ga ik me ff verdiepen in de mogelijkheden m.b.t. bulkverwerking via formulieren!
 
Je kunt m.b.v. recordsets wel degelijk controleren of een waarde in de tabel uit een andere database bestaat; in dat geval doe je de controle dus voordat je (ook met een recordset) de data invoert in de andere database. Ik zou sowieso altijd met formulieren werken, ongeacht of je nu één database gebruikt, of een FE met koppelingen naar andere database(s).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan