из двух таблиц, типа, табл1 ссылается (onetomany) на таблицу2, а таблица2(manytoone) на таблицу2, типа такого...
Я не думаю, что тут сработает delete from tabl1 t1 where t1 in ( select t2.id_t1 from tabl2 t2) ...или по-другому это делается?
Приведите пример таблиц с такой связью, пока что ощущение что вы что-то делаете не так
У меня есть таблица Places, в котором имеется поле popular_times(OneToMany), оно ссылается на таблицу PopularTimes, в котом есть поле place_id(ManyToOne), которое ссылается, как раз на таблицу Places. То есть двунаправленная связь тут, и мне нужно удалить поле в таблице Places, и следовательно все связи PopularTimes с place_id, тоже удалились. Проект на Spring Boot написан, и запрос на удаление через sql запрос хочу сделать....
Каскадом удалять что мешает?
Каскад не работает, так как при удаление Places, он ругается, что не понимает, что удалять из PopularTimes, так как поле Places уже удалено, и нет id. То есть работает, если удалить все объекты place_id из PopularTimes, то тогда поле в Places удалится без проблем.
Внешний ключ содержит в себе инструкцию "ON DELETE CASCADE"?
вряд ли у автора бы вопрос возник тогда) удаление бы прошло.
В используемой вами ORM наверняка уже все есть, только нужно правильные опции указать в моделях
Вот тут и ошибся
В том то и прикол, у меня Hibernate, он не удаляет, и при удаленти поле из одной таблицы, он ругаются на другую
<column name="place_id" type="varchar(255)"> <constraints nullable="false" foreignKeyName="fk_popular_times_place" referencedTableName="places" referencedColumnNames="id" deleteCascade="true"/> </column>
не факт=)) пока это лишь дефиниция колонки в ORM, которая вообще не факт что соотносится с реальным положением дел.
Следовательно, просим уточнить реальное положение дел
Это не ORM, а описание схемы бд посредством liquibase
я к тому, что в любом случае не определение внешнего ключа в БД. т.е вы сделайте скрипт создания внешнего ключа из БД, там должно быть видно, какое определение ключа на самом деле.
Обсуждают сегодня