Autor Zpráva
Ecrazit
Profil *
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
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 *
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
Jaký je výsledek dotazu?
select * from clanky_img where clanek_id not in (select id from clanky)
?
Ecrazit
Profil *
Výsledkem nejsou žádné řádky
Kajman_
Profil *
Ještě sem vypište kompletní struktury obou tabulek.
Ecrazit
Profil *
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 *
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
Vypište sem, co jste tam tedy zatím vytvořil...

show create table `clanky`;
show create table `clanky_img`;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0