Лично я склоняюсь к использованию хранимых процедур для доступа приложений к базе данных.Обычно я использую общий набор процедур, которые управляют операциями с каждой таблицей и обеспечивают целостность данных.Все решения относительно того, кто может просматривать или редактировать данный фрагмент информации, обрабатываются в самом приложении.Только учетные данные приложения имеют доступ к базе данных, все пользователи, которые, как оказалось, нашли свой путь там, заблокированы или имеют доступ только для чтения максимум.
Я склонен не любить триггеры, которые реализуют бизнес-логику, потому что они простыпропустить, когда вы пытаетесь что-то отладить.Если вся моя логика вставки обернута в SP, я могу вызвать этот SP и проследить его, чтобы определить причину сбоя вставки.Если на столе также есть триггер, о котором я забыл или не знал, может пройти некоторое время, прежде чем я это осознаю и не забуду посмотреть там.(хотя это, вероятно, просто фактор моей среды, если бы здесь использовалось больше триггеров, я уверен, что они были бы более заметными в моих мыслительных процессах)
Но я не совсем уверен, что мы смотрим на это с точки зренията же перспектива.Если вы собираетесь создавать разные представления для каждого набора пользователей, то похоже, что они имеют прямой доступ к хранилищу данных и не работают через интерфейс приложения?Если бы существовал интерфейс приложения для этой структуры, не нужно ли его обновлять и перекомпилировать для каждой группы пользователей, чтобы использовать правильные представления?
Полагаю, я говорю, что хранимые процессы работают хорошодля поддержки интерфейса приложения или предварительно созданных отчетов, но представления и триггеры могут быть лучшим вариантом, когда пользователи имеют доступ на чтение / запись к общему хранилищу данных без интерфейса приложения в середине.
Я бы также отметил, что существует вопрос о том, что является стандартом для вашего магазина.Если все остальные используют исключительно хранимые процедуры, и вы выбираете другой подход, то кому-то другому, пытающемуся прийти позже и поддерживать ваше решение, будет непросто.
В конце концов, если оно выполнит работу безэто была боль для поддержания или вызывающая другие проблемы, тогда это было хорошее решение.