2012-01-02 127 views
0

我目前正在与一个旧的应用程序,我不拥有任何代码工作,但我真的需要一些新的逻辑添加到应用程序。SQL服务器:触发更新刚刚插入的行

我发现做到这一点的唯一方法是搞砸数据库数据,并用触发器改变我需要的任何东西。

我写了下面的触发应该更新刚插入行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 [email protected], [email protected]; 

     fetch next from CURSOR_TESTE into @loteN, @refN 

    end 

    close MY_CURSOR 
    deallocate MY_CURSOR 

问题是,当一个新的注册表被插入,似乎它会陷入僵局。

它不可能做我想做的事情?

你能帮助我另一种方法吗?

+0

为什么更新刚插入的行,而不是简单地将正确的数据与开始? – Oded 2012-01-02 18:27:35

+0

插入由应用程序完成的,我没有进入他的源代码进行更改,以包括2个aditional的领域。 – sakana 2012-01-02 18:29:25

+1

Eww。触发器+游标+没有应用程序源代码=痛苦的食谱。祝你好运! – RickNZ 2012-01-03 03:33:34

回答

1

你需要的,如果要修改的飞行新插入/更新的记录使用INSTEAD OF触发。