Задать вопрос
@Misuta

В чем разница между функцией и триггером?

В чем разница между функцией и триггером? Если можно на примере MS SQL Server.
  • Вопрос задан
  • 478 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Функция - это хранимый объект, который производит указанные действия по факту явного вызова, и возвращает вычисленный результат, тип которого описан в тексте функции. Код функции может также модифицировать и другие объекты.

Триггер - это хранимый объект, который описывает реакцию на указанное событие. Обычно это событие изменения данных (удаление, вставка, обновление данных таблицы), реже (и не в каждой СУБД поддерживается) событие изменения метаданных (создание, изменение или удаление хранимых объектов или модификация их свойств). Данная реакция заключается в выполнении соответствующего кода (триггерной процедуры либо триггерной функции, зависит от СУБД). Выполняемый код может модифицировать как сами изменяемые объекты, действие над которыми вызвало срабатывание триггера (т.е. модифицировать выполняемые модификации), так и другие объекты. Триггер сам по себе ничего и никуда не возвращает, триггерная процедура тоже ничего не возвращает, триггерная функция - возвращает обновлённое состояние объекта, действие с которым вызвало срабатывание триггера.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Daemon23RUS
@Daemon23RUS
Если совсем простыми, то функцию вы вызываете сами (например в запросе) в то время как триггер срабатывает "сам по себе" при наступлении условия триггирования.
Ответ написан
Комментировать
@alexalexes
Триггер - это функция (точнее процедура), запускаемая (поджигаемая) событиями изменения данных - insert, update, delete (до или после события), на определенной таблице.
В описании триггера обязательно указано событие, на которое он подписан для начала выполнения.
Обычная функция может быть вызвана как пользователем, так и из тела триггера.
Триггеры, функции, процедуры как правило пишутся процедурным языком, встроенным в СУБД, в отличии от декларативного языка SQL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы