Autor | Zpráva | ||
---|---|---|---|
Ecrazit Profil * |
#1 · Zasláno: 18. 5. 2012, 14:29:05
Zdravím,
mám dvě tabulky tohoto typu: clanky -------- id nazev -------------- 1 prvni 2 druhy 3 treti 4 ctvrty 5 paty clanky_img --------------- id clanek_id jmeno ------------------------------- 1 1 prvni 2 2 druhy 3 2 treti 4 5 ctvrty 5 4 paty První tabulka obsahuje články a druhá tabulka obrázky k nim. K jednomu článka může náležet žádný, jeden nebo více obrázků, které jsou v tabulce clanky_img a sloupec clanek_id udává, ke kterému článku každý obrázek patří. A chci se tedy zeptat, je možné mezi těmito tabulkami nějak vytvořit cizí klíč? Když jsem vytvořil cizí klíč u tabulky clanky, kde id odkazovalo na sloupec clanek_id v tabulce clanky_img, tak mi pak nešlo nic vkládat do tabulky clanky, hlasilo to error 1050. |
||
Kajman Profil |
#2 · Zasláno: 18. 5. 2012, 14:45:57
V clanky_img můžete dát na sloupci clanek_id cizí klíč odkazující na primární klíč nad sloupcem id v tabulce clanky.
|
||
Ecrazit Profil * |
#3 · Zasláno: 18. 5. 2012, 14:59:08 · Upravil/a: Ecrazit
Když se snažím FK vytvořit dotazem:
alter table `clanky_img` add CONSTRAINT `fk_imgs` FOREIGN KEY (`clanek_id`) REFERENCES `clanky` (`id`); tak dostanu error: Cannot add or update a child row: a foreign key constraint fails (`nette`.<result 2 when explaining filename '#sql-11ac_23'>, CONSTRAINT `fk_imgs` FOREIGN KEY (`clanek_id`) REFERENCES `clanky` (`id`)) tabulky mají engine InnoDB |
||
Kajman Profil |
#4 · Zasláno: 18. 5. 2012, 15:48:29
Jaký je výsledek dotazu?
select * from clanky_img where clanek_id not in (select id from clanky) |
||
Ecrazit Profil * |
#5 · Zasláno: 18. 5. 2012, 16:07:23
Výsledkem nejsou žádné řádky
|
||
Kajman_ Profil * |
#6 · Zasláno: 18. 5. 2012, 16:58:45
Ještě sem vypište kompletní struktury obou tabulek.
|
||
Ecrazit Profil * |
#7 · Zasláno: 18. 5. 2012, 17:21:32
clanky
id int(11) Auto Increment title varchar(100) NULL text text NULL user_id int(11) seo varchar(100) NULL section_id int(11) date datetime NULL related varchar(100) NULL updated datetime NULL deleted tinyint(1) NULL [0] clanky_img id int(11) Auto Increment name varchar(100) NULL clanek_id int(11) title varchar(200) NULL |
||
Ecrazit Profil * |
#8 · Zasláno: 18. 5. 2012, 19:21:55
tak foreign key se mi vytvořit sice povedlo, ale když teď chci zapsat záznam do tabulky clanky, vyhodí mi to Cannot add or update a child row: a foreign key constraint fails (`nette`.`clanky_img`, CONSTRAINT `clanky_img_ibfk_1` FOREIGN KEY (`clanek_id`) REFERENCES `clanek` (`id`))
|
||
Kajman Profil |
#9 · Zasláno: 18. 5. 2012, 19:29:16
Vypište sem, co jste tam tedy zatím vytvořil...
show create table `clanky`; show create table `clanky_img`; |
||
Časová prodleva: 12 let
|
0