sql >> Databáze >  >> RDS >> Mysql

Omezení cizího klíče MySQL mizí

Jen pro objasnění, takto vypadá tabulka po zavedení omezení cizího klíče:

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 ;

Všimněte si, že fk_leerp_oefenr_leerplan a fk_leerp_oefenr_oefenreeks indexy mysql přidávají automaticky.

Po přidání prvního jedinečného klíčového omezení:

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

Mysql odstraňuje index fk_leerp_oefenr_leerplan, protože již není potřeba pro podporu kontrol cizího klíče ve sloupci leerplan_id. V tomto okamžiku tabulka vypadá takto:

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 ;

Stručně řečeno, Sqlyog zobrazuje indexy pouze ve stromovém zobrazení vlevo. Pokud chcete vidět cizí klíče, vyberte tabulku ve stromovém zobrazení a stiskněte F10.



  1. Laravel 5.1 Zabezpečení nahrávání souborů

  2. Zastaralé rozšíření MySQL v PHP 5.5.x

  3. jqGrid – Jedinečné ID pro nový řádek

  4. Uprostřed transakce nelze změnit vlastnost transakce pouze pro čtení