sp_check_for_sync_trigger (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Определяет, вызывается ли определяемый пользователем триггер или хранимая процедура в контексте триггера репликации, который используется для немедленного обновления подписок. Эта хранимая процедура выполняется на издателе в базе данных публикации или на подписчике в базе данных подписки.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_check_for_sync_trigger
[ @tabid = ] tabid
[ , [ @trigger_op = ] 'trigger_op' OUTPUT ]
[ , [ @fonpublisher = ] fonpublisher ]
[ ; ]
Аргументы
[ = ] @tabid tabid
Идентификатор объекта таблицы, проверяемой для немедленного обновления триггеров. @tabid имеет значение int без значения по умолчанию.
[ @trigger_op = ] "trigger_op" OUTPUT
Указывает, является ли выходной параметр возвращать тип вызываемого триггера. @trigger_op является параметром OUTPUT типа char(10) и может быть одним из этих значений.
значение | Описание |
---|---|
Ins |
INSERT триггер |
Upd |
UPDATE триггер |
Del |
DELETE триггер |
NULL (по умолчанию) |
[ @fonpublisher = ] fonpublisher
Указывает место выполнения хранимой процедуры. @fonpublisher бит с значением по умолчанию0
.
- Если
0
выполнение находится на подписчике. - Если
1
выполнение находится на издателе.
Значения кода возврата
0 указывает, что хранимая процедура не вызывается в контексте триггера немедленного обновления. 1 указывает, что вызывается в контексте немедленно обновляемого триггера и является типом возвращаемого триггера в @trigger_op.
Замечания
sp_check_for_sync_trigger
используется в репликации моментальных снимков и репликации транзакций.
sp_check_for_sync_trigger
используется для координации между репликацией и пользовательскими триггерами. Эта хранимая процедура определяет, вызывается ли она в контексте триггера репликации. Например, можно вызвать процедуру sp_check_for_sync_trigger
в тексте определяемого пользователем триггера. Если sp_check_for_sync_trigger
возвращается 0
, определяемый пользователем триггер продолжает обработку. Если sp_check_for_sync_trigger
возвращается 1
, определяемый пользователем триггер завершает работу. Это гарантирует, что определяемый пользователем триггер не запускается при обновлении таблицы триггером репликации.
Примеры
А. Добавление кода в триггер в таблице подписчика
В следующем примере показан код, который может использоваться в триггере таблицы подписчика.
DECLARE @retcode INT,
@trigger_op CHAR(10),
@table_id INT;
SELECT @table_id = object_id('tablename');
EXEC @retcode = sp_check_for_sync_trigger
@table_id,
@trigger_op OUTPUT;
IF @retcode = 1
RETURN;
B. Добавление кода в триггер таблицы Издателя
Код также можно добавить в триггер таблицы на издателе; Код аналогичен, но вызов sp_check_for_sync_trigger
включает дополнительный параметр.
DECLARE @retcode INT,
@trigger_op CHAR(10),
@table_id INT,
@fonpublisher INT;
SELECT @table_id = object_id('tablename');
SELECT @fonpublisher = 1;
EXEC @retcode = sp_check_for_sync_trigger
@table_id,
@trigger_op OUTPUT,
@fonpublisher;
IF @retcode = 1
RETURN;
Разрешения
Любой пользователь с SELECT
разрешениями в системном представлении sys.objects может выполняться sp_check_for_sync_trigger
.