2010-11-13 2 views

ответ

7

Хранимые процедуры хранятся в виде предварительно скомпилированного кода (хранимая процедура) и вызывается программистом там, где он хочет запускать. Сохраненная процедура может возвращать значения. About procedures and functions.

Триггеры называются объектами базы данных, которые запускаются автоматически при вставке, удалении, обновлении (или другом событии), не может быть явного вызова. Триггер не может возвращать данные. About triggers.

Вы можете использовать процедуры в коде триггера.

+0

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

+0

Вы не можете запускать триггер, он всегда выполняется автоматически до или после (определенный в триггере), но вы можете иметь много триггеров, которые выполняются в одном и том же событии (вставка тоже событие). Каждый триггер запускается в системном событии или в событии insert/update/delete (вам нужно определить таблицу для этого типа триггеров). Вы не можете выполнить процедуру, которая выполняется автоматически, но вы можете запустить триггер, который запускается автоматически и вызывает вашу процедуру. – ksogor

+0

Хорошо, что многое уже очищено, я внимательно читаю ваши ссылки. Но что вы подразумеваете под тем, что вы сказали в скобках: «Каждый триггер запускается в системном событии или в событии insert/update/delete (вам нужно определить таблицу для этого типа триггеров)». Нужно ли мне определять отдельную таблицу, на которую влияет триггер? –

1

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

Триггер определяется как активирующийся при выполнении инструкции INSERT, DELETE или UPDATE для связанной таблицы.

Хранимая процедура представляет собой группу операторов Transact-SQL, скомпилированных в единый план выполнения.

+0

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

Смежные вопросы