Я использую Oracle 11g. Я разработчик с базовыми знаниями SQL. (: S)Oracle удаляет без ограничения ограничений
Мне нужно создать запрос на удаление, но у моего пользователя БД нет разрешения на отключение ограничений.
У меня есть следующая структура.
TABLE CARD_HOLDER
CARD_HOLDER_ID
... (other fields)
/
TABLE CARD
Card_ID
... (other fields)
/
TABLE SERVICE
SERVICE_ID
SERVICE_DESCRIPTION (credit, debit, etc...)
/
TABLE CARD_HOLDER_SERVICES
CARD_HOLDER_ID
SERVICE_ID
... (other fields)
нужно удалить все данные из CARD_HOLDERS, которые имеют услугу типа "сервис = 10" , Так что я бы удалить карты, другие таблицы, связанные с держателем карты, что я не показываю здесь ради краткости, и наконец CARD_HOLDER_SERVICES и CARD_HOLDER itselt.
Дело в том, чтобы удалить держатель карты, мне нужно знать, если он имеет обслуживание = 10, и если я удалить CARD_HOLDER_SERVICES первых у меня нет этой информации больше фильтровать которые мне нужно удалить.
Я проверил в таблице CARD_HOLDER_SERVICES что CARD_HOLDER_ID ограничение типа НЕ откладываемые.
Единственное, что я мог думать, делать и я не знаю, как, ни ли это будет работать или нет, не создать временную таблицу с CARD_HOLDER_IDs, которые я хочу удалить, а затем удалить CARD_HOLDER_SERVICES и последним CARD_HOLDER.
Может ли кто-нибудь сказать мне, что является самым простым и лучшим способом сделать это?
Производительность не является проблемой.
Заранее спасибо.
Я не знаю о первом методе процедуры. Но если я попытаюсь удалить card_holder перед card_holder_service, как во втором подходе, это даст мне ошибку ограничения. Потому что он используется. Я попробую процедуру, и как только у меня появится обратная связь, я дам вам знать. –
Я только что адаптировал первый подход к моей реальной схеме и работал как шарм. Для циклов решена моя проблема. Большое спасибо. Извините за задержку с ответом. –