2013-03-13 88 views
0

我正嘗試在SQL Server 2008中編寫一個存儲過程,在將某些值插入表格後更新表格。在SQL Server 2008中插入一些值後更新表格

我的存儲過程從DMV獲取值並將它們存儲在表中。在插入查詢之後的相同過程中,我爲同一個表編寫了更新查詢。

插入結果填充良好,但更新結果正在丟失。

但是當我嘗試做只在存儲過程中插入和我手動執行更新查詢一切都很好。

有人可以幫我嗎?爲什麼會發生這樣的事情?

+0

你能提供您工作的示例代碼.. – 2013-03-13 10:50:12

+0

存儲過程是不是在這種情況下,最好的辦法,'觸發器'應該在這裏使用。 – 2013-03-13 12:44:27

+0

@YaqubAhmad - 沒有我的需要只是一個存儲過程。我也知道使用觸發器,但我需要從DMV做一些計算,所以我使用SP。 – 2013-03-14 05:45:12

回答

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 
+0

感謝您的幫助 – 2013-03-13 11:28:29

0

最好的辦法是使用TriggerAFTER 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 
+0

我不需要觸發器。無論如何感謝您的幫助。 – 2013-03-14 05:45:31

相關問題