sql >> Databasteknik >  >> RDS >> Mysql

MySQL främmande nyckel begränsning försvinner

Bara för att förtydliga saker och ting, så här ser tabellen ut efter att de främmande nyckelbegränsningarna har satts på plats:

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 ;

Lägg märke till fk_leerp_oefenr_leerplan och fk_leerp_oefenr_oefenreeks index som mysql läggs till automatiskt.

När du har lagt till den första unika nyckelbegränsningen :

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

Mysql tar bort fk_leerp_oefenr_leerplan-indexet eftersom det inte längre behövs för att stödja kontroller av främmande nyckel på leerplan_id-kolumnen. Vid det här laget ser tabellen ut så här:

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 ;

Lång historia kort, Sqlyog visar bara indexen i dess trädvy till vänster, om du vill se främmande nycklar, välj tabellen i trädvyn och tryck på F10.



  1. Hur man listar rader för en fråga eller visar "inga poster" med en enda fråga

  2. Fix:"den ledande precisionen för intervallet är för liten" i Oracle Database

  3. Effektiv metod för att visa grupptitel en gång — PHP/MySQL/jQuery

  4. välj från en mysql-tabellposter som tillhör idag