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

MySQL-Fremdschlüsselbeschränkung verschwindet

Nur um die Dinge zu verdeutlichen, so sieht die Tabelle aus, nachdem die Fremdschlüsseleinschränkungen eingerichtet wurden:

CREATE TABLE `leerplan_oefenreeks` (
  `leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
  `leerplan_id` int(11) NOT NULL,
  `oefenreeks_id` int(11) NOT NULL,
  `plaats` int(11) NOT NULL,
  PRIMARY KEY (`leerplan_oefenreeks_id`),
  KEY `fk_leerp_oefenr_leerplan` (`leerplan_id`),
  KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
  CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE,
  CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;

Beachten Sie die Indizes fk_leerp_oefenr_leerplan und fk_leerp_oefenr_oefenreeks, die mysql automatisch hinzufügt.

Nachdem Sie die erste eindeutige Schlüsselbeschränkung hinzugefügt haben:

ALTER TABLE leerplan_oefenreeks ADD CONSTRAINT un_leerp_oefenr UNIQUE(leerplan_id, oefenreeks_id);

MySQL entfernt den Index fk_leerp_oefenr_leerplan, da er nicht mehr benötigt wird, um die Fremdschlüsselprüfungen in der Spalte leerplan_id zu unterstützen. Zu diesem Zeitpunkt sieht die Tabelle wie folgt aus:

CREATE TABLE `leerplan_oefenreeks` (
  `leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
  `leerplan_id` int(11) NOT NULL,
  `oefenreeks_id` int(11) NOT NULL,
  `plaats` int(11) NOT NULL,
  PRIMARY KEY (`leerplan_oefenreeks_id`),
  UNIQUE KEY `un_leerp_oefenr` (`leerplan_id`,`oefenreeks_id`),
  KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
  CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE,
  CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;

Um es kurz zu machen, Sqlyog zeigt nur die Indizes in seiner Baumansicht auf der linken Seite, wenn Sie die Fremdschlüssel sehen möchten, wählen Sie die Tabelle in der Baumansicht aus und drücken Sie F10.