Рекомендуем, 2024

Выбор редакции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 ВЫЗОВ () ; 

Ключевые различия между триггером и процедурой

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

Заключение:

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

Top