Разница между триггером и процедурой

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 13 Май 2024
Anonim
Триггеры и хранимые процедуры в MS SQL Server (Triggers and stored procedures)
Видео: Триггеры и хранимые процедуры в MS SQL Server (Triggers and stored procedures)

Содержание


Триггер и процедура являются компонентом расширенного SQL. Триггер и Процедура выполняют заданную задачу при их выполнении. Принципиальная разница между триггером и процедурой заключается в том, что Курок выполняется автоматически при возникновении события, тогда как Процедура выполняется, когда он вызывается явно.

Давайте обсудим еще некоторые различия между триггером и процедурой с помощью сравнительной таблицы, показанной ниже.

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица

Основа для сравненияТриггерыпроцедуры
основной Они автоматически выполняются при наступлении указанного события.Они могут быть выполнены при необходимости.
призваниеТриггеры не могут быть вызваны внутри процедуры.Но вы можете вызвать процедуру внутри триггера.
параметр Мы не можем передавать параметры триггерам.Мы можем передать параметры процедурам.
ВозвращениеТриггер никогда не возвращает значение при исполнении.Процедура может вернуть значение / с при исполнении.


Определение триггера

Триггер подобен процедуре, которая выполняется автоматически при наступлении указанного события. Подобно процедуре, триггер не нужно вызывать явно. Триггеры создаются для выполнения некоторой задачи в ответ на возникновение определенного события.

Триггер может быть вызван в ответ на DDL операторы (DELETE, INSERT или UPDATE) или DML операторы (DELETE, INSERT или UPDATE) или для некоторых операций с базой данных (SERVERERROR, LOGON, LOGOFF, STARTUP или SHUTDOWN).

Триггер состоит из трех компонентов, как описано ниже:

  • Мероприятие: Событие - это возникновение некоторого инцидента, который вызовет выполнение триггера. Триггер можно заказать, чтобы выполнить либо ДО происходит событие или может быть приказано выполнить ПОСЛЕ выполнение события.
  • Состояние: Это необязательная часть триггера. Если не упомянуто, триггер будет выполняться по мере возникновения указанного события. Если условие указано, то он проверит правила, чтобы определить, должен ли триггер быть выполнен.
  • действие: Действие - это набор операторов SQL, которые будут выполняться при выполнении триггера.

Общая форма создания события обсуждается ниже:


СОЗДАТЬ ТРИГГЕР ДО ПОСЛЕ ДЕЙСТВИЕ СОСТОЯНИЯ;

Здесь условие необязательно.

Определение процедур

Процедуру можно принять за программный блок, созданный для выполнения какой-либо задачи, и он сохраняется в базе данных. Они вызываются оператором SQL всякий раз, когда это необходимо. Процедуры похожи на пользовательские функции, которые определяются разработчиками. Процедуры могут быть вызваны с помощью ВЫЗОВ или ВЫПОЛНИТЬ.

Процедуры полезны в следующих ситуациях:

  • Если эта процедура требуется для нескольких других приложений, она может быть сохранена на сервере, чтобы их можно было вызывать из любого приложения. Это уменьшит усилия по дублированию процедуры из одной базы данных в другую, а также улучшит модульность программного обеспечения.
  • Поскольку процедура выполняется на сервере, это уменьшит передачу данных, а также уменьшит стоимость связи.
  • Процедуры могут использоваться для проверки сложных ограничений, которые выходят за рамки триггера.

Давайте обсудим общую форму создания процедуры:

СОЗДАТЬ ПРОЦЕДУРУ () ВОЗВРАЩАЕТСЯ ;

Здесь параметры и локальные объявления являются необязательными. Они упоминаются только тогда, когда они необходимы. Нижеприведенное утверждение описывает вызов процедур.

ВЫЗОВ () ;

  1. Основное различие между триггером и процедурой заключается в том, что триггер - это оператор, который вызывается автоматически при возникновении события. С другой стороны, процедура вызывается всякий раз, когда это требуется.
  2. Можно определить процедуру внутри триггера. Но триггер никогда не определяется внутри процедуры, так как триггер должен вызываться автоматически при возникновении какого-либо события.
  3. Мы можем передавать параметры в процедуры, но мы не можем передавать параметры для запуска, так как они не вызываются нами.
  4. Процедура может возвращать значения параметров или код, но триггер не может.

Вывод:

Триггеры полезны, но их избегают, если существует какая-либо альтернатива им, поскольку это увеличивает сложность данных. Иногда триггеры также заменяются соответствующей процедурой.