Autor Zpráva
kucape
Profil
Zdravím,
mám dvě tabulky. V druhé je cizí klíč z první. Potřebuju odstranit záznamy v první tabulce a zároveň docílit toho, aby se odstranili související záznamy v druhé tabulce.
Zkoušel jsem příkaz: "ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol ", ale mysql mi vyhodí chybovou hlášku:
#1025 - Error on rename of '.\knihovnicka\vypujcka' to '.\knihovnicka\#sql2-f8c-4a6' (errno: 152)

Mohli byste mi poradit jak to udělat, případně v čem je chyba ?
Děkuji
juriad
Profil
Pokud potřebuješ odstranit záznamy, tak nic proč se pokoušíš rušit cizí klíč?

Když už jsi prozradil, že se jedná o knihovničku, tak můžeš ukázat i současnou strukturu databáze (jak obě tabulky vypadají).
A úlohu, kterou se snažíš vykonat (při odstranění knihy odstranit i všechny historické výpůjčky??)
kucape
Profil
Jedna tabulka se jmenuje ctenar, v ni je sloupec cislo_prukazu. Druhá je vypujcky, kde je cizí klíč cislo_prukazu. Já potřebuji odstranit některé záznamy (čtenáře) a potřebuju aby se odstranili i související záznamy v tabulce "vypujcky".

Čili potřebuju udělat:

DELETE FROM ctenar WHERE podmínka...

ale to pochopitelně nejde protože existujou záznamy spojené s tou tabulkou ctenar.

Vyskočí chyba:
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`knihovnicka`.`vypujcka`, CONSTRAINT `fk_ctenar` FOREIGN KEY (`cislo_prukazu`) REFERENCES `ctenar` (`cislo_prukazu`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Já potřebuju, jak jsem už psal, odstranit záznamy z tabulky ctenar a zaroven s tím, odstranit související záznamy z vypujcky.
juriad
Profil
Buď napřed ostraň výpůjčky:
DELETE FROM vypujcky
JOIN ctenar ON ctenar.cislo_prukazu = vypujcky.cislo_prukazu
WHERE podmínka na čtenáře
A následně můžeš odstranit i čtenáře, protože už žádné výpůjčky mít nebude.

Nebo změň FOREIGN KEY tak aby měl ON DELETE CASCADE. To způsobí, že dotaz projde a všechny závislé řádky se také rovnou smažou.
kucape
Profil
Mohl byste mi ještě poradit jak nastavit to ON DELETE CASCADE ?
Pracuju v phpmyadmin.
juriad
Profil
http://www.hurricanesoftwares.com/setting-up-a-relational-database-in-mysql/
kucape
Profil
Děkuju :)

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: