Autor | Zpráva | ||
---|---|---|---|
andy_99 Profil |
#1 · Zasláno: 11. 11. 2013, 17:05:23
ahojte. chcel by som vás poprosiť o vysvetlenie ako fungujú cudzie kľúče. Povedzme , že máme 2 tabuľky : uzivatelia a fotak.
tabuľka uzivatelia by mala stlpce: id (PK ,int, AI), meno(varchar), fotak_id(int). tabuľka fotak by mala stĺpce: fotak_id(PK, int), meno_fotaku(varchar). Prosim vysvetlite mi ako spravit teda cudzi kluc fotak_id.. keď použijem takýto zápis: ALTER TABLE fotak ADD CONSTRAINT fotak_id_fk FOREIGN KEY(fotak_id) REFERENCES uzivatelia(fotak_id); a ked sa potom snažím do tabuľky fotak insertovať dáta vypíše mi nasledovnú hlášku... Cannot add or update a child row: a foreign key constraint fails (`xxx`.`fotak`, CONSTRAINT `fotak_id_fk` FOREIGN KEY (`fotak_id`) REFERENCES `uzivatelia` (`fotak_id`)) SQL Statement: INSERT INTO `xxx`.`fotak` (`fotak_id`, `meno_fotaku`) VALUES ('1', 'Nikon') Ďakujem za každý komentár |
||
Alphard Profil |
Hmm, Kajman má pravdu, že takhle to nemá smysl, chybí tam ta hodnota do páru, protože to děláte obráceně. |
||
Kajman Profil |
#3 · Zasláno: 11. 11. 2013, 17:42:09
andy_99:
Děláte klíč obráceně. Cizí klíč má být v tabulce uzivatelia a směřovat na fotak_id v tabulce fotak. Tedy ALTER TABLE uzivatelia
|
||
andy_99 Profil |
#4 · Zasláno: 11. 11. 2013, 17:46:23 · Upravil/a: andy_99
presne tak.. píše to vždyteda aj keď sa snažím vložiťhoc ake nove data do phpmyadmina alebo do mysql workbench.... teda bud môžem najprv vymazať všetky data a potom spraviť tento cudzi kľúč a to mi už nedovolí ale vložiť už žiadne data do tabuľky fotak ... alebo najprv vložím všetky data do tabuľky fotak ale to mi zasa nedovolí spraviť cudzí klúč.
čiže to má vyzerať následovne? ALTER TABLE uzivatelia ADD CONSTRAINT fotak_id_fk FOREIGN KEY(fotak_id) REFERENCES fotak(fotak_id); Pri tomto pokuse som mal takúto odozvu: Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`xxx`.<result 2 when explaining filename '#sql-3554_ce'>, CONSTRAINT `fotak_id_fk` FOREIGN KEY (`fotak_id`) REFERENCES `fotak` (`fotak_id`)) |
||
Kajman Profil |
#5 · Zasláno: 12. 11. 2013, 11:13:58
andy_99:
Máte v tabulce uzivatelia ve sloupci fotak_id nějaké nenullové hodnoty, které nejsou v tabulce fotak? select u.fotak_id from uzivatelia u where u.fotak_id not in (select f.fotak_id from fotak f) |
||
Časová prodleva: 10 let
|
0