/ / mysql odstrániť a cudzí kľúč obmedzenia - mysql, sql-delete

mysql delete a cudzie kľúčové obmedzenia - mysql, sql-delete

"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ď č. 1

Zmeň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%";