mysql удаляя строку при соединении таблиц

0

Я новичок в базах данных и задаю вопрос об удалении данных. Я хочу удалить строку из одной таблицы, в то время как эта таблица связана с двумя другими разными таблицами.

см. рисунки таблицы:

Изображение 174551

Изображение 174551

Изображение 174551

Я пробовал этот код, но он дал мне ошибку:

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'))

Может ли кто-нибудь дать мне совет и помощь, пожалуйста.

Заранее благодарю/Луиза

  • 1
    Отредактируйте свой вопрос и добавьте схему таблиц, включая индексы . К вашему сведению, не размещайте изображения данных / кода. Он не может быть скопирован / вставлен при попытке создать для вас ответ.
  • 0
    Вам нужно начать удалять строки из дочерней таблицы, а затем перейти к родительским таблицам.
Показать ещё 6 комментариев
Теги:
database
join

1 ответ

0

Внешние ключи являются значениями, хранящимися в одной таблице, которые происходят из другого.

Несмотря на отсутствие вашей схемы, у меня возникает ощущение, что она выглядит примерно так:

Город - таблица верхнего уровня, на которой идентификатор указан в Поставщике. Идентификатор поставщиков указан в пункте.

Поэтому, чтобы удалить Поставщиков из Атланты. Вы должны сначала удалить все элементы, которые находятся в Поставщиках в Атланте. Затем удалите Поставщики.

Это проще всего сделать с помощью 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^;
  • 0
    спасибо, я попробую это :)
  • 0
    код работает .. (вроде), но ничего не удалено, это все те же таблицы ..
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню