sql >> Database teknologi >  >> RDS >> Mysql

MySQL udenlandsk nøgle begrænsning forsvinder

Bare for at præcisere tingene, så ser tabellen sådan ud, efter at begrænsningerne for fremmednøgle er blevet sat på plads:

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 ;

Bemærk fk_leerp_oefenr_leerplan og fk_leerp_oefenr_oefenreeks indekser mysql tilføjer automatisk.

Når du har tilføjet den første unikke nøglebegrænsning :

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

Mysql fjerner fk_leerp_oefenr_leerplan-indekset, da det ikke længere er nødvendigt for at understøtte kontrol af fremmednøgle på leerplan_id-kolonnen. På dette tidspunkt ser tabellen således ud:

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 ;

Lang historie kort, Sqlyog viser kun indekserne i dets trævisning til venstre, hvis du vil se fremmednøglerne, skal du vælge tabellen i trævisningen og trykke på F10.



  1. Rails 3 - pludselig afventende migreringsfejl

  2. MySQL indsætter kun ny række, hvis kombinationen af ​​kolonner (som tillader dubletter) er unik

  3. Hvordan kan jeg stoppe en MySQL-forespørgsel, hvis det tager for lang tid?

  4. Dynamisk inputfejl til Mysql ved hjælp af PHP