Autor Zpráva
Prochy
Profil
Zdravim,
chci se zeptat, když chci smazat z tabulky nějakej řádek, a následně mi to zařve, že to je omezeno cizím klíčem, tak jestli se to dá rovnou v tom dotazu nastavit, aby mi to změnilo na jiný id, ty co sou tim omezeni.
Dejme tomu, že mám tabulku:
Typ platby:
Id name
1 Kartou
2 Poukázkou

Druhá tabulka platby
id idTypPlatby částka
1 2 500

A teď bych chtěl smazat řádek Poukázkou: DELETE * FROM typPlatby WHERE id=2 LIMIT 1
Po tomto mi to zařve, že to nemůže smazat, jelikož to je omezeno cizím klíčem na kterém je nastaveno update. Tak by mě zajímalo jestli jde udělat něco takového:
DELETE * FROM typPlatby WHERE id=2 LIMIT 1 ON UPDATE 1
Prostě aby mi to třeba změnilo, ty co jsou na té poukázce závislý na idTypPlatby=1. Momentálně to dělám, tak že vždy první změnim v té tabulce dotazem update idTypPlatby a pak smažu řádek v tabulce Typ Platby.
Snad jsem se vyjádřil srozumitelně.
Děkuji za odpověď.
DJ Miky
Profil
Chování se dá nastavit přímo při vytváření cizího klíče, tobě by se hodilo asi ON DELETE SET DEFAULT (při smazání nastavit sloupec na default hodnotu - kdybys ji u idTypPlatby nastavil na 1), ale u toho si nejsem jistý podporou (MySQL manuál píše, že InnoDB tabulky SET DEFAULT neberou).

Zrovna u tohoto konkrétního příkladu mi mazání typů plateb nepřijde jako nejvhodnější řešení - nejde to řešit jinak?

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: