Я работаю над старой системой баз данных оракула (10 г), и у меня нет подробной информации о схеме. Мне нужно выяснить, удалит ли конкретную запись в таблице каскадные удаления в других таблицах. Я проверил триггеры. Но я не уверен в каскадировании из-за реляционных ограничений. Есть ли простой способ определить это?Oracle определить, будет ли удаление каскадом
ответ
Предполагая, что вы знаете (или можете определить) ограничение внешнего ключа (а) участие, вы можете посмотреть на DELETE_RULE
колонки с DBA_CONSTRAINTS
SELECT constraint_name, delete_rule
FROM dba_constraints
WHERE r_constraint_name = <<name of the primary key constraint>>
AND r_owner = <<owner of the primary key constraint>>
AND delete_rule = 'CASCADE'
покажут вам все ограничения внешнего ключа, которые относятся к конкретному ограничение первичного ключа и каскадирование удалений. Если вас беспокоят ограничения, которые будут делать SET NULL
, когда родительская строка будет удалена, вы можете искать строки, где delete_rule
также был SET NULL
.
Обратите внимание, что если вы не имеете прав на DBA_CONSTRAINTS
таблице, вы можете использовать вместо ALL_CONSTRAINTS
при условии, что вы на самом деле касается только с таблицами, которые у вас есть SELECT
привилегии.
Спасибо, Джастин! – vikas
Почему бы не использовать '' 'user_constraints'''? – Ben
@Ben - Вы, конечно, можете использовать 'user_constraints' или' all_constraints', если знаете, что у вас есть какие-либо ограничения или у вас есть доступ к любым таблицам, где существуют эти ограничения. Возможно, хотя, вероятно, маловероятно, что в другой схеме есть таблица, в которой у вас нет доступа «select» к этому имеет внешний ключ, который ссылается на таблицу в вашей схеме. В этом случае вам нужно использовать 'dba_constraints'. –
- 1. Удаленный объект будет повторно сохранен каскадом
- 2. Как определить, будет ли удаление заданного цикла отключить график
- 3. удаленный объект будет повторно сохранен каскадом
- 4. NHibernate Удаленный объект будет повторно сохранен каскадом
- 5. NHibernate: Change Parent - «удаленный объект будет повторно сохранен каскадом»
- 6. Выбирают ли случаи в VB6 автоматически каскадом?
- 7. JComboBox каскадом
- 8. Как подсчитать строки, затронутые каскадом
- 9. Удаление объектов связи с каскадом в данных ядра
- 10. Может ли программа определить использование ресурсов Oracle?
- 11. Как определить, нужно ли перестроить индекс oracle
- 12. Oracle: как определить, является ли столбец «логическим»?
- 13. Удалить бросками «удаленный объект будет повторно сохранен каскадом»
- 14. Ошибка в Grails/GORM: удаленный объект будет повторно сохранен каскадом
- 15. Как определить, будет ли запрос масштабироваться хорошо?
- 16. Как определить, будет ли поле lazyload?
- 17. Как определить, будет ли отображаться изображение?
- 18. Как определить, будет ли выполняться инструкция SQL?
- 19. Есть ли способ определить, имеет ли пакет состояние в Oracle?
- 20. Рекурсивное удаление SQL Oracle
- 21. Oracle, row_number, удаление строк
- 22. Динамическое удаление в Oracle
- 23. Oracle - Удаление перекрывающихся записей
- 24. Удаление LF с Oracle
- 25. Как определить Oracle XE?
- 26. Учение нескольких слушателей каскадом
- 27. Hibernate удалить не каскадом
- 28. Проблема с каскадом NHibenate
- 29. Вставка с каскадом Hibernate
- 30. Как каскадом вставки
Я предполагаю, что я старею - 10g теперь устарело? – haki