SQL Server: инициировать обновление только что вставленной строки - PullRequest
0 голосов
/ 02 января 2012

Я сейчас работаю со старым приложением, у которого нет исходного кода, но мне действительно нужно добавить новую логику в приложение.

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

Я написал следующий триггер, который должен обновить 2 столбца только что вставленной строки:

CREATE TRIGGER addLoteInfo ON fi
FOR INSERT
AS 
DECLARE
    @loteN          varchar(15),
    @refN           varchar(18),
    @CientifN               varchar(40),
    @CaptureZ       varchar(20)


    declare MY_CURSOR cursor for 
    select   
        i.lote, i.ref
    from inserted i

    open MY_CURSOR

    fetch next from MY_CURSORinto @loteN, @refN

    while @@fetch_status = 0  
    begin 

         SELECT @CientifN = u_ncientif FROM SE where lote LIKE @loteN and ref LIKE @refN;

         SELECT @CaptureZ = u_zcaptura FROM SE where lote LIKE @loteN and ref LIKE @refN;

        UPDATE FI SET LNCIENT=@CientifN, LZCAP=@CaptureZ;

        fetch next from CURSOR_TESTE into @loteN, @refN 

    end 

    close MY_CURSOR
    deallocate MY_CURSOR

Проблема в том, что при вставке нового реестра возникает проблема, что он заходит в тупик.

Невозможно сделать то, что я пытаюсь сделать?

Можете ли вы помочь мне с другим подходом?

1 Ответ

1 голос
/ 02 января 2012

Вам необходимо использовать триггер INSTEAD OF, если вы хотите изменить вновь вставленную / обновленную запись на лету.

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