Как проверить значение столбца на триггере вставки, как триггер обновления - PullRequest
0 голосов
/ 30 мая 2018

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

CREATE TRIGGER [dbo].[trgAfterUpdate] ON [dbo].[recharge_request]

FOR UPDATE
    AS

    DECLARE @status varchar(50);

    SELECT @status=i.status FROM inserted i; 

    IF UPDATE (status)
        BEGIN
            IF @status='Failure'
                --My Update Statement
            ELSE IF @status='Success'
                --My Update Statement
        END

Теперь я хочу создать триггер вставки также для проверки значения столбца состояния и выполнения других операций с таблицами.потому что в некоторых случаях значение столбца состояния не будет обновлено до, мне нужно выполнить некоторую операцию над вставкой, если значение столбца равно «Success» или «Fail».Возможные значения столбца состояния: Success, Fail, Pending и Process.любая помощь будет оценена.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Моя проблема решена, вот решение:

CREATE TRIGGER [dbo].[trgAfterInsert] ON [dbo].[recharge_request]
AFTER INSERT
    AS
        BEGIN
            DECLARE @status varchar(50);

            SELECT @status=i.status FROM inserted i; 

            IF @status='Success'
                BEGIN
                    --My Update statement
                END
        END
0 голосов
/ 30 мая 2018
DECLARE @status varchar(50);

SELECT @status=i.status FROM inserted i;

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

Вы должны рассматривать inserted и deleted как таблицу, которая может содержать более1 ряд

IF UPDATE (status)
BEGIN

    update t
    set    ....
    from   inserted i
           inner join some_table t on i.somecol = t.anothercol
    where  t.status = 'Failure'

    update t
    set    ....
    from   inserted i
           inner join some_table t on i.somecol = t.anothercol
    where  t.status = 'Success'

    . . . . . -- other status value

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