2016-09-02 7 views
1

Например, если клиент удален, все связанные строки в другой таблице (S) будут удалены. Как это сделать mysql, я пробовал много часов, но никто не работал. enter image description hereMySQL. Как удалить связанные строки во многих отношениях.

+0

Это почти невозможно ответить, не зная, какую базу данных вы используете, и без понимания того, что ограничения внешнего ключа выглядят как. Тем не менее, 'Customer_Addresses' имеет внешний ключ с каскадным удалением, тогда удаление записи из этой таблицы приведет к удалению данных из' Customer' и 'Addresses' – glennstar

ответ

1

простой способ для достижения этой цели является таблицы проектирования, связанные с ON DELETE CASCADE вариант.

В основном, когда вы дизайн таблицы базы данных, которая имеет внешний ключ (первичный ключ другой таблицы), вы можете установить ON DELETE CASCADE для этого внешнего ключа. Это означает, что когда запись удаляется в основной таблице (таблица, в которой этот внешний ключ является первичным ключом) также удалены все связанные записи в других таблицах.

Следовательно, вам не нужно думать о создании «сумасшедших» запросов для удаления связанных данных на нескольких таблицах.

Вы можете узнать больше о ON DELETE CASCADE по следующей ссылке: mysqltutorial.org/mysql-on-delete-cascade

+0

Thans, он работает. – stack

1

Вы должны DELETE в адрес первого, клиенты, и после того, как отношения Или вы можете попробовать использовать DELETE Cascate ... но будьте осторожны http://www.mysqltutorial.org/mysql-on-delete-cascade/ увидеть это тоже: MySQL on delete cascade. Test Example

DELETE FROM Addresses WHERE AddressID IN (SELECT AddressID FROM Custormers_Addresses WHERE CustormerID = ID)

ТОГДА .. Удалить клиент DELETE FROM Customers WHERE CustomerID = ID

ТОГДА .. удалить relación DELETE AddressID FROM Custormers_Addresses WHERE CustormerID = ID

+0

. Вы можете попробовать использовать' UNION', как описано [здесь] (http: /stackoverflow.com/questions/17225080/mysql-delete-from-with-union-subquery-by-in-condition) среди других мест. Альтернативно рассмотрите возможность использования транзакционной базы данных, такой как InnoDB, если у вас нет действительно огромного количества данных. – glennstar