Hoi,
Ik ben al een tijdje aan het klooien met foreign keys in MySQL. Op de een of andere manier lukt het nooit zoals ik het graag wil en ik ben er ook vast van overtuigd dat dit aan mij zal liggen. Hoewel ik al met meerdere gelijksoortige problemen te maken heb gehad, zal ik het probleem uit leggen aan de hand van het volgende voorbeeld:
Ik heb twee tabellen in MySQL gedefinieerd aan de hand van onderstaande definities:
Tussen de 2 bovenstaande tabellen hoort een relatietabel die ik als volgt heb gedefinieerd:
De bedoeling is dus dat er alleen entries in de tabel `PersonNumbers` komen die ook daadwerkelijk bestaan in de `Person` en `Game` tabellen. Het vreemde is nu dat er verder geen foutmelding wordt gegenereerd door phpMyAdmin (ik voer de queries in in phpMyAdmin) en het lijkt dan ook dat de bovenstaande tabeldefinities goed zijn gelukt.
Het is echter zo dat de tabel `PersonNumbers` alle entries toestaat, ook al bestaat er geen bijbehorende `Person` of `Game` niet. Ook bij het bekijken van de database dump, zijn de foreign key definities niet aanwezig. De primary keys doen het allemaal wel goed.
Heeft er iemand een idee wat het probleem kan zijn? Nogmaals, het is niet de eerste keer dat ik tegen dit probleem aanloop in phpMyAdmin.
Alvast mijn hartelijke dank!!
Ik ben al een tijdje aan het klooien met foreign keys in MySQL. Op de een of andere manier lukt het nooit zoals ik het graag wil en ik ben er ook vast van overtuigd dat dit aan mij zal liggen. Hoewel ik al met meerdere gelijksoortige problemen te maken heb gehad, zal ik het probleem uit leggen aan de hand van het volgende voorbeeld:
Ik heb twee tabellen in MySQL gedefinieerd aan de hand van onderstaande definities:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| CREATE TABLE `Person` ( personId SMALLINT, name TINYTEXT NOT NULL, email TINYTEXT, dateOfBirth DATE, PRIMARY KEY (personId) ) CREATE TABLE `Game` ( gameId SMALLINT, dateBegin DATE NOT NULL, dateEnd DATE, PRIMARY KEY (gameId) ) |
Tussen de 2 bovenstaande tabellen hoort een relatietabel die ik als volgt heb gedefinieerd:
SQL:
1
2
3
4
5
6
7
8
9
| CREATE TABLE `PersonNumbers` ( personId SMALLINT, gameId SMALLINT, number SMALLINT NOT NULL, PRIMARY KEY (personId, gameId), FOREIGN KEY (personId) REFERENCES `Person` (personid), FOREIGN KEY (gameId) REFERENCES `Game` (gameId) ) |
De bedoeling is dus dat er alleen entries in de tabel `PersonNumbers` komen die ook daadwerkelijk bestaan in de `Person` en `Game` tabellen. Het vreemde is nu dat er verder geen foutmelding wordt gegenereerd door phpMyAdmin (ik voer de queries in in phpMyAdmin) en het lijkt dan ook dat de bovenstaande tabeldefinities goed zijn gelukt.
Het is echter zo dat de tabel `PersonNumbers` alle entries toestaat, ook al bestaat er geen bijbehorende `Person` of `Game` niet. Ook bij het bekijken van de database dump, zijn de foreign key definities niet aanwezig. De primary keys doen het allemaal wel goed.
Heeft er iemand een idee wat het probleem kan zijn? Nogmaals, het is niet de eerste keer dat ik tegen dit probleem aanloop in phpMyAdmin.
Alvast mijn hartelijke dank!!