Ik loop tegen een probleem aan met een MySQL tabel die ik voor de navigatie van een website gebruik. Omdat de data recursief verwerkbaar moet zijn, heb ik een FK op het veld 'parent' die naar 'name' verwijst.
Wanneer ik een waarde van 'parent' probeer aan te passen, is er niets aan de hand. Wanneer ik een waarde voor 'name' probeer aan te passen, krijg ik deze foutmelding:
Hier een deel van de tabel:
Bij het aanpassen van andere velden (die niet in dit overzicht zijn opgenomen) gaat alles goed. Omdat ik "ON UPDATE CASCADE" gebruik, zou alles goed moeten gaan lijkt me. Ik heb me op Google al wezenloos gezocht op termen als 'update foreign key same table' maar daar kwam niets naar boven waar ik mee geholpen ben.
Weet iemand van jullie de oplossing?
Wanneer ik een waarde van 'parent' probeer aan te passen, is er niets aan de hand. Wanneer ik een waarde voor 'name' probeer aan te passen, krijg ik deze foutmelding:
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`verentis_nl_verdb01`.`navigation`, CONSTRAINT `navigation_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `navigation` (`name`) ON DELETE CASCADE ON UPDATE CASCADE)
Hier een deel van de tabel:
SQL:
1
2
3
4
5
6
7
8
9
10
| CREATE TABLE IF NOT EXISTS 'navigation' ( 'name' varchar(150) NOT NULL DEFAULT '', [..] 'parent' varchar(150) DEFAULT NULL, PRIMARY KEY ('name'), KEY 'parent' ('parent') ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE 'navigation' ADD CONSTRAINT 'navigation_ibfk_1' FOREIGN KEY ('parent') REFERENCES 'navigation' ('name') ON DELETE CASCADE ON UPDATE CASCADE; |
Bij het aanpassen van andere velden (die niet in dit overzicht zijn opgenomen) gaat alles goed. Omdat ik "ON UPDATE CASCADE" gebruik, zou alles goed moeten gaan lijkt me. Ik heb me op Google al wezenloos gezocht op termen als 'update foreign key same table' maar daar kwam niets naar boven waar ik mee geholpen ben.
Weet iemand van jullie de oplossing?