2013-03-13 78 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

相关问题