"Vymazávam vybrané riadky z oboch tabuliek v MYSQL, dve tabuľky majú cudzie kľúče."
DELETE d,b
FROM A as b
INNER JOIN B as d on b.bid=d.bid WHERE b.name LIKE "%xxxx%";
MYSQL sa sťažuje na cudzie kľúče, aj keď sa snažím vymazať z oboch tabuliek:
Error: Cannot delete or update a parent row: a foreign key constraint
fails (`yyy/d`, CONSTRAINT `fk_d_bid` FOREIGN KEY (`bid`) REFERENCES
`b` (`bid`) ON DELETE NO ACTION ON UPDATE NO ACTION)
čo je najlepšie riešenie, ktoré chcete odstrániť z oboch tabuliek?
odpovede:
6 pre odpoveď č. 1Zmeňte toto obmedzenie na použitie ON DELETE CASCADE
- čo znamená, že ak je riadok vymazaný, potom sa automaticky vymažú aj všetky podradené riadky.
Samozrejme sa dobre postarajte o používanie CASCADE - používajte ho len v prípade potreby. Ak ste s ním "prehnane zapálení a náhodne urobili dobre umiestnenú klávesnicu DELETE, môže to skončiť odstránením polovice databázy. :)
vidieť dokumentáciu o obmedzeniach cudzích kľúčov.
0 pre odpoveď č. 2
Myslím, že vidím, čo sa snažíte robiť
Ak môžete zmeniť štruktúru tabuľky, potom môžete použiť 2 príkazy, prvý s čiastkovým výberom
zmazať z B, kde ponuka IN (vyberte cenovú ponuku od spoločnosti A, kde je názov „% xxxx%“);
vymazať z A, kde názov ako "% xxxx%";