0

いくつかの値がテーブルに挿入された後にテーブルを更新するストアドプロシージャをSQLServer2008で作成しようとしています。

私のストアドプロシージャはDMVから値を取得し、それらをテーブルに格納します。クエリの挿入後の同じ手順で、同じテーブルの更新クエリを作成しました。

挿入結果は正常に入力されますが、更新の結果は失われます。

しかし、ストアドプロシージャに挿入するだけで、更新クエリを手動で実行しようとすると、すべて問題ありません。

なぜこのように起こっているのですか?

4

2 に答える 2

0

これには問題はないはずです。

以下のコードは期待どおりに機能します。

create procedure dbo.test

as

begin 

create table #temp (
name varchar(100) ,
id int
)

insert #temp
select name ,
       id 
from master..sysobjects

update #temp

set name='ALL Same'

from #temp

select * from #temp

drop table #temp

end
go
于 2013-03-13T11:08:39.860 に答える
0

最良のアプローチはトリガーを使用することです。トリガーのサンプルAFTER UPDATEは以下のとおりです。

ALTER TRIGGER [dbo].[tr_MyTriggerName]
   ON [dbo].[MyTableName] AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    --if MyColumnName is updated the do..
    IF UPDATE (MyColumnName) 
    BEGIN

        UPDATE MyTableName
        SET    AnotherColumnInMyTable = someValue
        FROM   MyTableName  
               INNER JOIN Inserted  
               ON MyTableName.PrimaryKeyColumn = Inserted.PrimaryKeyColumn 
    END
END
于 2013-03-13T13:05:07.173 に答える