Триггер обновления SQL - PullRequest
       5

Триггер обновления SQL

0 голосов
/ 07 февраля 2012

Я хочу, чтобы триггер SQL срабатывал при обновлении таблицы.У меня есть таблица с именем SimActivation и хранимая процедура spUpdateMnpDate, которая принимает два параметра: msisdn (varchar) и date (datetime).

Когда таблица SimActivation обновляется, я хочу вызвать процедуру с новыми значениями.

Вот то, что я получил в данный момент, после изменения его назад и вперед:

USE StoreSale;
GO
CREATE TRIGGER dbo.tSyncMnpDate
ON [dbo].[SimActivation]
AFTER UPDATE
AS      
    DECLARE @date datetime
    DECLARE @msisdn varchar(10)
    SET @date = (select ProcessDate from inserted)
    SET @msisdn = (select Msisdn from inserted)
    EXEC [spUpdateMnpDate] 
    @msisdn, @date;

GO

Может ли кто-нибудь указать мне правильное направление?

Спасибо:)

1 Ответ

2 голосов
/ 07 февраля 2012

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

Если хранимая процедура, которую вы пытаетесь вызвать, довольно проста, я бы вытащил код оттудаи к курку.Но помните, что вы работаете с наборами измененных строк (даже если изменение касается только одной строки), поэтому вы должны написать свой SQL соответствующим образом.

EDIT: Я предполагаю, что ваша процедура обновляет дату, когда PK равен @msisdn, если вы можете сделать это в своем триггере:

UPDATE Your_Table
SET Your_Table.ProcessDate = inserted.ProcessDate
FROM Your_table INNER JOIN inerted ON Your_Table.Msisdn = inserted.Msisdn

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

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