Перед удалением строки из таблицы есть ли простой способ проверить, будет ли она нарушать правило ссылочной целостности? Я хотел бы сделать это с C# победу формы приложения (.NET 3.5) с помощью SQL Server 2005.Проверка нарушения правил ссылочной целостности перед удалением
ответ
Есть несколько возможных вариантов, которые приходят на ум:
- Настройка каскадное удаление в базе данных, так что удаление всегда будет успешным.
- Перед удалением проверьте связанные записи с помощью SELECT. Это требует, чтобы приложение знало ограничения.
- Хорошая модель домена (бизнес-классы) должна позволить приложению быть в курсе связанных записей.
- Для определения операций удаления каскадов можно использовать Mapper O/R, такой как NHibernate.
- Используйте SMO (Microsoft.SqlServer.Smo) для проверки схемы базы данных для отношений, а затем проверьте наличие связанных записей. Я не знаю, возможно ли это.
Вы можете сделать удаление внутри транзакции:
try
{
begin transaction
delete row
}
catch SQLException
{
if SQL error indicates referential integrity violation
throw ReferentialIntegrityViolationException
}
finally
{
rollback transaction
}
(при условии, что вы никогда не хотите удаления иметь место в данный момент в вашем коде)
Я бы подумал, что идея состоит в том, чтобы определить, нарушено ли правило без стоимости выполнения фактического выполнения удаления. Это решение имеет все проблемы с производительностью и ни одно из преимуществ;) –
Почему? Проверка FK действительно SELECT * FROM ChildTable WHERE FKCOl = ParentKey. Для этого нужно дополнительное путешествие туда и обратно. Возможно, проще справиться с ошибкой – gbn
... без использования хранимой процедуры и инкапсуляции SQL-запроса, так что это все однократное путешествие. – gbn
- 1. WebApi - Проверка ссылочной целостности перед событием удаления
- 2. Проверка нарушений правил перед удалением записи
- 3. Проверить наличие нарушения ограничения целостности в SQL перед удалением
- 4. Обработка ссылочной целостности Constraint нарушения Правильно
- 5. Проверка целостности ссылочной целостности в SQL
- 6. Проверка ссылочной целостности SQL-сервера
- 7. Проверка ссылочной целостности в хранимой процедуре
- 8. Проверка ссылочной целостности в определении таблицы
- 9. Универсальная проверка ссылочной целостности ASP. NET MVC
- 10. Правильный способ обработки правил ссылочной целостности при создании заказов
- 11. Проблема ссылочной целостности db2
- 12. Как определить, является ли исключение нарушения ссылочной целостности
- 13. каскадных ссылочной целостности
- 14. Нарушение ограничения ссылочной целостности
- 15. Ошибка ссылочной целостности
- 16. Поддержание ссылочной целостности
- 17. Доступ к ссылочной целостности
- 18. Поддержание ссылочной целостности без фактического удаления записи
- 19. Проверка аргументов хранимой процедуры для обеспечения ограничений ссылочной целостности
- 20. ссылочной целостности в тестовых данных
- 21. Справочные таблицы данных ссылочной целостности
- 22. Ограничения ссылочной целостности Postgresql в Rails 3
- 23. PHP SQL Проверка ссылочной целостности для всей базы данных
- 24. Проверка NULL перед удалением объекта с перегруженным удалением
- 25. Проверка наличия файла пользователя перед его удалением
- 26. Проверка с помощью DeleteView перед удалением экземпляра
- 27. нарушения целостности во время высева
- 28. Исключение нарушения целостности Java Mysql
- 29. ссылочного нарушения ограничения целостности произошло
- 30. реляционного нарушения ограничения целостности произошло mvc4
Я не знаю никого, но если такие методы существуют, я полагаю, что конкретная технология, которую вы используете для доступа к базе данных, будет довольно важной частью информации. –