Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
71 / 66 / 29
Регистрация: 28.10.2013
Сообщений: 248

Каскадное удаление из таблицы по нескольким FK

08.09.2016, 16:43. Показов 1824. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

1) Есть таблица корпусов с PK [ID]
2) Есть таблица расстояния между корпусами ([HousingID1], [HousingID2], [Distance])

Как правильно организовать каскадное удаление по FK из второй таблицы, с учетом сразу двух полей (HousingID1 и HousindID2)? Хотелось бы без триггеров, возможно ли?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.09.2016, 16:43
Ответы с готовыми решениями:

Каскадное удаление EF
Здравствуйте. Хочется понять, как в EF можно настроить каскадное удаление. Прочитал множество примеров. Но почему-то ничего не получается....

Каскадное удаление не работает
Есть 2 таблицы в БД, связываю их следующим образом: далее удаляю все записи из таблицы Games using...

Не выполняется каскадное удаление
Суть проблемы.Встал вопрос о переводе БД с MS SQL SERVER на локальную SQLITE.Само собой пришлось переписывать код под SQLITE.Суть...

6
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.09.2016, 16:47
Цитата Сообщение от Lutk Посмотреть сообщение
Как правильно организовать каскадное удаление по FK из второй таблицы, с учетом сразу двух полей
Просто при создании каждого FK укажите ON DELETE CASCADE.
Если хотя бы один из корпусов был удален из базы, то расстояние от него до чего угодно теряет смысл.
0
71 / 66 / 29
Регистрация: 28.10.2013
Сообщений: 248
09.09.2016, 08:31  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Просто при создании каждого FK укажите ON DELETE CASCADE.
Если хотя бы один из корпусов был удален из базы, то расстояние от него до чего угодно теряет смысл.
Я бы рад, но sql не дает мне сделать этого. При попытке создания второго ON DELETE CASCADE получаю "Introducing FOREIGN KEY constraint 'FK_HousingsDistance2_Housings' on table 'HousingsDistance' may cause cycles or multiple cascade paths."
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
09.09.2016, 11:26
ну так разбирайся со внешними ключами - кольцо там у тебя наверняка
0
71 / 66 / 29
Регистрация: 28.10.2013
Сообщений: 248
09.09.2016, 14:36  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
ну так разбирайся со внешними ключами - кольцо там у тебя наверняка
Таблица HousingsDistance (HD) зависит только от Housings (H), от таблицы HD не зависит никто.
Таблица HD связана с H двумя FK, по любому из которых я могу определить каскадное удаление, но sql не дает определить по двум сразу.
Суть вопроса: удаляя корпус мне надо удалить связные записи по двум полям (т.е. все расстояния от него и все расстояния до него). Как бы это реализовали вы?
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
09.09.2016, 14:39
Цитата Сообщение от Lutk Посмотреть сообщение
Как бы это реализовали вы?
я бы никогда не пользовал каскады. Только код. Почему? Передадите свой проект кому-то, он свою логику "повесит" (да еще и триггеров добавит) и все, край. Посему нарисуйте схему данных, бизнес-логику и их взаимодействие. И будет вам счастье
0
71 / 66 / 29
Регистрация: 28.10.2013
Сообщений: 248
09.09.2016, 14:56  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
я бы никогда не пользовал каскады. Только код.
В данном случае другого способа просто не вижу) кодом описать не проблема, больше интерес)

P.S. Свою логику при любой реализации можно неплохо "повесить", по самый край хватит)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2016, 14:56
Помогаю со студенческими работами здесь

SQLite и каскадное удаление
Привет всем. Есть в БД 2 таблицы commands и matches. Для каждого матча есть внешний ключ на две команды с каскадным обновлением и...

Каскадное удаление из одной таблицы
Есть такая проблема, на MS SQL 2000 существует таблица, в которой одно из полей является первичным ключем и связано с другим полем...

Каскадное удаление
Доброго времени суток, я не знаток баз данных, но появилась задача которую необходимо решить в ближайшее время. Программа удаляет из...

Каскадное удаление
Есть маленькая база, в ней связанные таблицы, работаю с ней через орм. Вопрос по поводу связанных таблиц - пока все связанные данные удаляю...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru