0

我正在尝试在 SQL Server 2008 中编写一个存储过程,该过程在将某些值插入表后更新表。

我的存储过程从 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

最好的方法是使用Trigger,触发器示例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 回答