Mysql
 sql >> Datenbank >  >> RDS >> Mysql

FOREIGN KEY verweist auf die Spalte derselben Tabelle. Werte können nicht eingefügt werden

Für all Ihre Bedürfnisse sollten Sie diese Struktur nehmen

CREATE TABLE `menus` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) unsigned DEFAULT NULL,
  `label` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `fk_parent_menu` (`parent_id`),
  CONSTRAINT `fk_parent_menu` FOREIGN KEY (`parent_id`) 
    REFERENCES `menus` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

SQL-Fiddle-DEMO

Demo zeigt das Einfügen und Löschen eines übergeordneten Knotens

Der Magic-Drop-Teil für alle Kinder wird von ON DELETE CASCADE erledigt