Portál AbcLinuxu, 10. května 2025 12:34
Váš SQL-dotaz byl úspěšně vykonán ( dotaz trval 0.2215 sekund ) ALTER TABLE `lekari` ADD FOREIGN KEY ( `umi` ) REFERENCES `odbornosti` ( `odbornosti_nazev` ) ;(návod zmiňoval, že všechny tabulky mají být innoDB, to jsem taky udělal). No a pak návod hovoří, že si relace prohlídnu v Struktura->Zobrazit relace. Viz obrázek – nic tam nevidím.
SELECT * FROM `lekari` WHERE `odbornosti`='oční';:) …, já tam něco vidím… :)
Není zač
CREATE TABLE oddeleni ( id int NOT NULL auto_increment, nazev varchar(50) NOT NULL, PRIMARY KEY(id) )ENGINE=InnoDB; CREATE TABLE ordinace ( id int NOT NULL auto_increment, oddeleni_id int NOT NULL, nazev varchar(50) NOT NULL, PRIMARY KEY(id), CONSTRAINT fk_ordinace_oddeleni_id FOREIGN KEY(oddeleni_id) REFERENCES oddeleni(id) ON UPDATE CASCADE ON DELETE RESTRICT )Pokud již máš hotovou tabulku, tak cizí klíč se přidává třeba takto:
ALTER TABLE ordinace ADD CONSTRAINT fk_ordinace_oddeleni_id FOREIGN KEY(oddeleni_id) REFERENCES oddeleni(id) ON UPDATE CASCADE ON DELETE RESTRICT;Jinak nejlepší je spojovat reference pomocí typu int. Jednak je to nejrychlejší možnost a jednak je problém, že když něco spojuješ pomocí varchar, tak MySQL neřeší definovanou velikost tohoto sloupce, na to bacha. Díky tomu může spojit sloupce s varchar(10) a varchar(20).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.