ON DELETE CASCADE

Zdravim.
Mam problem s ON DELETE CASCADE - nefunguje mi.
usek kodu:

CREATE TABLE Let
(
id_let CHAR (10) NOT NULL,
PRIMARY KEY (id_let)
)TYPE=INNODB;
CREATE UNIQUE INDEX Ilet ON Let (id_let);

CREATE TABLE Letenka
(
id_letenka CHAR (10) NOT NULL,
id_let CHAR (10) NOT NULL,
PRIMARY KEY (id_letenka),
FOREIGN KEY ref_id_let(id_let) REFERENCES let(id_let) ON DELETE CASCADE
)TYPE=INNODB;
CREATE UNIQUE INDEX Iletenka ON Letenka (id_letenka);

Ak zmazem v DB Let, Letenka prisluchajuca k nemu tam zostane. Nevie niekto kde robim chybu?
nevím, vypadá to dobře.. :-|
Tak to vypadá, že zdejší sql sice zápis deklarace cizího klíče neoznačí jako chybnou syntaxi, ale úplně ho ignoruje...
třeba už proto, že je zdejší SQL case-senzitive a cizí klíč se odkazuje na neexistující tabulku let, přesto deklarace projde....
Zkoušel jsem to i v MYISAM, taky nic... Asi nějaky MySQL potěmkin... Nebo spíš nastavení? Nevím, tolik se v tom nevyznám.
Jj, zlatý postgres. ;-)
ja osobne taketo veci nepouzivam, ale myslim ze problem by mohol byt v nastaveni foregin key... ten nie je nastaveny v tabulke z ktorej chces mazat, ale v druhej. Tam ti je vsak na dve veci :-)

Ja by som taketo veci riesil asi inak, cez proc, alebo rucne z php, nemam rad FK, mam pocit ze to len komplikuje veci, ked chces do takych tabuliek pridavat a pod.

ale fakt s tym nemam skusenosti, mozno sa mylim.
Prog. kdyby FK byla zbytečná komplikace, tak nevznikne. FK pomáhají udržovat konzistenci db, tedy česky: uf, no prostě že něco neukazuje někam, kde nic není. ;-) Prostě není v db nepořádek.
Pokud FK nemáš rád, nepoužívej. Je dobré, že o nich víš, až narazíš na případ, kdy je s výhodou použiješ, tak to uděláš.
Komplikuje přidávání řádků? Přidávání je úplně stejné, jako by tam ten FK nebyl. Pokud takový klíč označíš jako ON DELETE CASCADE, může ti ušetřit spoustu práce, prostě smažeš záznam na který se odkazuje a o zbytek se postará db. Bohužel, jak píše quartz, tady to tak nefunguje.
njn, mas pravdu. Na nieco to dobre je. Ja vacsinou robim veci, kde sa polozky nemazu, tj. nastavujem len nejaky param, napr entry_deleted = 1, pretoze aj zmazane data musia ostavat koli statistikam a pod. Na strankach sa to asi vemli nevyuziva, ale vo vacsich systemoch jo. Ak obcas potrebujem mazat cascade, tak to robim rucne,... Je pravda, ze by bolo lepsie to riesit pomocou FK. Neviem, ci to na wz.cz funguje, ale podla mna ano. Len ako som pisal vyzsie, FK musi byt nastaveny v tabulke, z ktorej ides mazat. Pretoze ak nastavis FK do tabulky, z ktorej chces aby sa nieco automaticky zmazalo, mysql nevie ze sa na nu ma odvolat, ked mazez z inej tabulky. Najjednoduzsie je nastavit FK na tabulky obe. Dakedy som to skusal, ale nebolo vela casu, suril termin odovzdania, tak to je rucne, jeden riadok kodu navyse. Ale nic nove som sa nenaucil...
FK musí být nastaveno v tabulce, která se maže na základě smazání záznamu, na který FK odkazuje.
viz http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

Mám pocit, že vím, proč to tu nechodí. Tady totiž není InnoDB engine, jinak mi tohle fungovalo i v MySQL 4