mysql изтриване и ограничение за външен ключ

Изтривам избрани редове от двете таблици в MYSQL, двете таблици имат външни ключове.

DELETE d,b
  FROM A as b
  INNER JOIN B as d on b.bid=d.bid WHERE b.name LIKE '%xxxx%';

MYSQL се оплаква от външни ключове, въпреки че се опитвам да изтрия от двете таблици:

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)

какво е най-доброто решение тук за изтриване от двете таблици?


person user121196    schedule 05.05.2010    source източник


Отговори (2)


Променете това ограничение, за да използвате ON DELETE CASCADE -- което означава, че ако даден ред бъде изтрит, всички „дъщерни“ редове също ще бъдат изтрити автоматично.

Разбира се, внимавайте да използвате CASCADE - използвайте го само когато е необходимо. Ако сте прекалено ревностни с него и случайно направите добре поставено DELETE, това може да доведе до изтриване на половината от вашата база данни. :)

Вижте документация относно ограниченията на външния ключ .

person intgr    schedule 05.05.2010

Мисля, че виждам какво се опитваш да направиш

Ако не можете да промените структурата на таблицата, можете да използвате 2 израза, първият с подизбор

изтриване от B, където оферта IN (изберете оферта от A, където име като '%xxxx%');

изтриване от A където име като '%xxxx%';

person laher    schedule 05.05.2010
comment
страхотна идея, но разбрах. Не можете да укажете целева таблица „B“ за актуализация в клаузата FROM - person user121196; 05.05.2010