Я новичок в базах данных и задаю вопрос об удалении данных. Я хочу удалить строку из одной таблицы, в то время как эта таблица связана с двумя другими разными таблицами.
см. рисунки таблицы:
Я пробовал этот код, но он дал мне ошибку:
delete jbsupplier,jbitem
from jbitem
inner join jbsupplier
inner join jbcity
where jbitem.supplier=jbsupplier.id
and jbsupplier.city=jbcity.id;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails ('louhj600'.'jbitem', CONSTRAINT 'fk_item_supplier' FOREIGN KEY ('supplier') REFERENCES 'jbsupplier' ('id'))
Может ли кто-нибудь дать мне совет и помощь, пожалуйста.
Заранее благодарю/Луиза
Внешние ключи являются значениями, хранящимися в одной таблице, которые происходят из другого.
Несмотря на отсутствие вашей схемы, у меня возникает ощущение, что она выглядит примерно так:
Город - таблица верхнего уровня, на которой идентификатор указан в Поставщике. Идентификатор поставщиков указан в пункте.
Поэтому, чтобы удалить Поставщиков из Атланты. Вы должны сначала удалить все элементы, которые находятся в Поставщиках в Атланте. Затем удалите Поставщики.
Это проще всего сделать с помощью 2 запросов.
delete i.* from jbitem i join jbsupplier s on i.supplier = s.id join jbcity c on s.city = c.id WHERE c.id = ^ID of Atlanta^;
delete s.* from jbsupplier s join jbcity on jbsupplier.city = jbcity.id where c.id = ^ID of Atlanta^;