Versio

foreignkey

Overzicht Reageren

RT

RT

18/08/2007 01:17:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
ALTER TABLE pages ADD CONSTRAINT fk_pages
      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.
 
PHP hulp

PHP hulp

24/05/2012 16:47:52
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Martijn B

Martijn B

18/08/2007 09:45:00
Quote Anchor link
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.
 
Frank -

Frank -

18/08/2007 11:37:00
Quote Anchor link
@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

RT

18/08/2007 13:30:00
Quote Anchor link
Bedankt Frank, dat was het inderdaad.
 
RT

RT

19/08/2007 02:55:00
Quote Anchor link
De database is leeg, nu wil ik data toevoegen. Als ik gegevens probeer te posten krijg ik een foutmelding. De volgende tabel gebruik ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


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.


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?
Gewijzigd op 01/01/1970 01:00:00 door RT
 



Overzicht Reageren