SQL Server:触发更新刚刚插入的行

时间:2012-01-02 18:24:27

标签: sql-server triggers

我目前正在使用一个旧的应用程序,我没有任何源代码,但我真的需要为应用程序添加一些新的逻辑。

我发现这样做的唯一方法是搞乱数据库数据,并用触发器改变我需要的东西。

我编写了以下触发器,它应该更新刚刚插入的行的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 个答案:

答案 0 :(得分:1)

如果您想动态修改新插入/更新的记录,则需要使用INSTEAD OF触发器。