foreignkey
Ik heb een innodb tabel genaamd pages, met hierin de velden: id,parent_id,url.
Als een rij een parent_id heeft, dan is het een subpagina, zoniet dan is het een parent. Ik vroeg me af of het mogelijk is dat als er een parent wordt verwijderd, ook alle subpagina's die hierbij horen worden verwijderd?
Ik dacht iets van:
Maar dat retourneert het volgende:
#1064 - You have ... right syntax to use near 'REFERENCES pages (id) ON DELETE CASCADE' at line 3 \
Bvd, RT.
Als een rij een parent_id heeft, dan is het een subpagina, zoniet dan is het een parent. Ik vroeg me af of het mogelijk is dat als er een parent wordt verwijderd, ook alle subpagina's die hierbij horen worden verwijderd?
Ik dacht iets van:
Code (php)
1
2
3
2
3
ALTER TABLE pages ADD CONSTRAINT fk_pages
FOREIGN KEY parent_id
REFERENCES pages (id) ON DELETE CASCADE
FOREIGN KEY parent_id
REFERENCES pages (id) ON DELETE CASCADE
Maar dat retourneert het volgende:
#1064 - You have ... right syntax to use near 'REFERENCES pages (id) ON DELETE CASCADE' at line 3 \
Bvd, RT.
Gesponsorde koppelingen:
Volgens mij kan dit niet.
Het is makkelijker om een klasse te maken "Category" en daarin een methode "del".
Misschien dat dit ook lukt met "storage procedures". Ik ken alleen de naam voor de rest heb ik hier nog niets mee gedaan.
Het is makkelijker om een klasse te maken "Category" en daarin een methode "del".
Misschien dat dit ook lukt met "storage procedures". Ik ken alleen de naam voor de rest heb ik hier nog niets mee gedaan.
@Martijn: Jouw oplossing gebruik je alleen wanneer je zelf een DBMS wilt bouwen, niet om een bestaande DBMS te gebruiken waar dit al in zit...
@RT: parent_id hoort tussen haakjes te staan, wellicht dat de query daarover struikelt. Verder ziet de query er goed uit.
@RT: parent_id hoort tussen haakjes te staan, wellicht dat de query daarover struikelt. Verder ziet de query er goed uit.
Bedankt Frank, dat was het inderdaad.
De database is leeg, nu wil ik data toevoegen. Als ik gegevens probeer te posten krijg ik een foutmelding. De volgende tabel gebruik ik:
Insert query:
INSERT INTO `pages` ( `id` , `parent_id` , `url` )
VALUES (
NULL , '0', 'home.php'
)
Foutmelding:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`etiebaxnl/pages`, CONSTRAINT `fk_pages` FOREIGN KEY (`parent_id`) REFERENCES `pages` (`id`) ON DELETE CASCADE)
Dit is de eerste keer dat ik met foreign keys werk.
Bvd, RT.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
CREATE TABLE `pages` (
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) NOT NULL,
`url` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_pages` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
ALTER TABLE `pages`
ADD CONSTRAINT `fk_pages` FOREIGN KEY (`parent_id`) REFERENCES `pages` (`id`) ON DELETE CASCADE;
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) NOT NULL,
`url` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_pages` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
ALTER TABLE `pages`
ADD CONSTRAINT `fk_pages` FOREIGN KEY (`parent_id`) REFERENCES `pages` (`id`) ON DELETE CASCADE;
Insert query:
INSERT INTO `pages` ( `id` , `parent_id` , `url` )
VALUES (
NULL , '0', 'home.php'
)
Foutmelding:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`etiebaxnl/pages`, CONSTRAINT `fk_pages` FOREIGN KEY (`parent_id`) REFERENCES `pages` (`id`) ON DELETE CASCADE)
Dit is de eerste keer dat ik met foreign keys werk.
Bvd, RT.
Edit:
Ik heb het al door, parent_id en id zijn nu hetzelfde, dat kan natuurlijk niet.
Ik heb het al door, parent_id en id zijn nu hetzelfde, dat kan natuurlijk niet.
Edit:
Ik snap er nog steeds niks van. Als ik nu data post zonder iets in te vullen bij id en parent_id, geeft hij een error. Waarom?
Ik snap er nog steeds niks van. Als ik nu data post zonder iets in te vullen bij id en parent_id, geeft hij een error. Waarom?
Gewijzigd op 01/01/1970 01:00:00 door RT



