Autor | Zpráva | ||
---|---|---|---|
Taiwan Profil |
#1 · Zasláno: 26. 3. 2014, 10:00:48
Dobrý den, mám takový problém s foreign klíčema. Mám několik tabulek, které jsou vzájemně provázány a problém je v tom, že když v (table5) mám více řádků odkazující na jeden řádek v mateřské tabulce (table4). Tak se při smazání řádku v mateřské tabulce (table1) nesmažou všechny řádky na něj odkazující... Když je v dceřinné (table5) pouze jeden řádek, tak se smaže. Pokud je jich tam více, kteří odkazují na stejný řádek v (table4), tak se smaže vždy ten poslední, někdy i předchozí a vždy zůstane ten první. I přes to, že už nemá na co odkazovat. Ovšem pokud řádek v mateřské tabulce (table1) smažu přímo z phpmyadmin tak se smažou i všechny odkazující řádky. Divné co? Kde je problém? Používám InnoDB.
Zde přikládám náčrt dtb: Děkuji za připadné odpovědi. |
||
Kajman Profil |
#2 · Zasláno: 26. 3. 2014, 10:17:42
Používáte transakce? Nemazání se děje i při mazáný přes mysql konzoli? Děje se to i na jiné (např. poslední stabilní) verzi mysql? Smaže se to korektně, pokud z table5 uděláte i cizí klíč přímo do table1?
|
||
Taiwan Profil |
Kajman:
Tak oprava, přes phpmyadmina se to také maže jak chce.... Translakce nepoužívám. Na jiném fóru jsem se dozvěděl, že mám nějak překřížené vazby mezi tabulkami.... Bohužel nevím přesně co to znamená a jak to opravit. |
||
Kajman Profil |
#4 · Zasláno: 26. 3. 2014, 12:24:17
Děje se to i na jiné (např. poslední stabilní) verzi mysql? Smaže se to korektně, pokud z table5 uděláte i cizí klíč přímo do table1?
|
||
Taiwan Profil |
#5 · Zasláno: 26. 3. 2014, 12:48:51
Kajman:
Používám verzi 5.7.3 Když udělám klíč přímo na table1 tak se to maže tak jak má... Takže děkuji za pomoc, jen mě zaráží, proč to nefunguje tak jak jsem to měl.... |
||
Kajman Profil |
#6 · Zasláno: 26. 3. 2014, 13:19:16
Taiwan:
„jen mě zaráží, proč to nefunguje tak jak jsem to měl“ Třeba jen jen chyba v mysql serveru. Můžete nachystat sql příkazy s vytvořením tabulek, inserty, deletem a select na data, která tam být nemají, a ten poslat s reportem chyby. |
||
Časová prodleva: 10 let
|
0