Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Trigger или StoredProcedure / 4 сообщений из 4, страница 1 из 1
29.12.2001, 07:45
    #32020051
Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger или StoredProcedure
Может кто сталкивался? Подскажите.
Есть sp в которой проверяются условия и в зависимости от условия делается лидо insert или update в таблицу. Причем приходится выполнять много проверок.
А что если делать просто insert, а проверки делать в триггере? Какое решение оптимальнее с точки зрения работы БД?
...
Рейтинг: 0 / 0
29.12.2001, 08:30
    #32020053
Pandre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger или StoredProcedure
Все зависит от подробностей, но одно из правил: триггер должен выполнять лишь необходимый минимум операций, чтобы не блокировать таблицу лишнее время.
...
Рейтинг: 0 / 0
29.12.2001, 08:58
    #32020057
Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger или StoredProcedure
Подробности.
Каждый день надо запускать упомянутую SP, которая обсчитывает изменения и ставляет/обновляет результаты в БД. SP обсчивает примерно 100 тыс. и > записей, и вставляет/обновляет примерно столько же записей. Процедуру можно запускать, например ночью, когда с БД никто не работает.

Попутный вопрос. Нужно чтобы вся процедура пересчета выполнялась одной транзакцией. Т.е. обновить/вставить записи для всех, условно говоря "счетов" или ни для одного. Как поступить?
Открывать транзакцию -> запускать процедуру -> проверять -> закрывать транзакцию? Или есть другие варианты?
...
Рейтинг: 0 / 0
03.01.2002, 06:46
    #32020106
Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger или StoredProcedure
На мой взгляд триггеры оправдывают себя только в том случае, если доступ к таблицам возможен из различных приложений и при этом необходимо обеспечить логическую целостность БД. Если же БД 'закрытая' и доступ к данным обеспечивается только путем вызова хранимых процедур триггеры особо и не нужны. Кроме того использование триггеров в этом случае может привести к понижению производительности за счет:
а) возможной дополнительной обработки таблиц INSERTED, DELETED;
б) исключения возможности использования SQL Server-ом 'прямых' обновлений записей при UPDATE-ах.

А транзакцию правильней открывать, закрывать и откатывать в самой процедуре.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Trigger или StoredProcedure / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]