2012-01-02 7 views
0

私は現在のところ、ソースコードを所有していない古いアプリケーションで作業していますが、本当にアプリケーションに新しいロジックを追加する必要があります。SQL Server:ちょうど挿入された行を更新するトリガー

私が見つけた唯一の方法は、データベースのデータを使いこなし、必要なものをトリガーで変更することです。

私はちょうど挿入された行の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

+0

アプリケーションによって挿入が行われ、2つの追加フィールドを含めるためにソースコードにアクセスする権限がありません。 – sakana

+1

Eww。トリガー+カーソル+アプリソースコードなし=痛みのレシピ。がんばろう! – RickNZ

答えて

1

新しく挿入/更新されたレコードをオンザフライで変更する場合は、INSTEAD OFトリガーを使用する必要があります。

関連する問題