Если у вас не включено каскадное удаление, то сначала вы должны удалить из таблицы элементов все строки, которые относятся к калифорнийским поставщикам. Если сначала попытаться удалить поставщиков, произойдет сбой для всех поставщиков, на которые есть ссылки в таблице Item
, поскольку это нарушит ограничение внешнего ключа. Ограничение обеспечивает целостность данных и гарантирует, что записи в таблице Item
не могут содержать потерянные / несуществующие идентификаторы поставщиков.
Так что, если "Калифорния" - это код штата 20, вы можете запустить:
DELETE FROM Item where Supplier IN (SELECT ID FROM Supplier WHERE State = 20)
, а затем
DELETE FROM Supplier WHERE State = 20
, и он удалит все строки Предмета, которые связаны с калифорнийским поставщиком, а затем все Поставщики.
И, конечно, если Калифорния больше не существует, вы можете также захотеть DELETE FROM States where ID = 20
. (Здесь я предполагаю, что у вас есть правильно нормализованная база данных с таблицей состояний, которая вам действительно нужна, вместо того, чтобы дублировать описание состояний каждый раз в таблице поставщиков).
Однако, если вам нужно определить свой внешний ключ (и) с помощью ON DELETE CASCADE
), т.е.
«каскадное удаление», тогда вы можете просто запустить команду удаления непосредственно для таблицы поставщиков (или даже для таблицы «Состояния», если она у вас есть), и она автоматически удалит все зависимые строки в таблицах внешнего ключа.