Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server 2008中将某些值插入表后更新表_Sql_Sql Server 2008_Stored Procedures_Insert Update - Fatal编程技术网

在SQL Server 2008中将某些值插入表后更新表

在SQL Server 2008中将某些值插入表后更新表,sql,sql-server-2008,stored-procedures,insert-update,Sql,Sql Server 2008,Stored Procedures,Insert Update,我试图在SQLServer2008中编写一个存储过程,在将一些值插入到表中后更新表 我的存储过程从DMV中获取值并将其存储在表中。在插入查询之后的相同过程中,我为同一个表编写了更新查询 插入结果可以很好地填充,但更新的结果会丢失 但是,当我尝试在存储过程中只执行插入操作并手动执行更新查询时,一切都很好 为什么会发生这样的事情?这应该没有问题 下面的代码按预期工作 create procedure dbo.test as begin create table #temp ( name va

我试图在SQLServer2008中编写一个存储过程,在将一些值插入到表中后更新表

我的存储过程从DMV中获取值并将其存储在表中。在插入查询之后的相同过程中,我为同一个表编写了更新查询

插入结果可以很好地填充,但更新的结果会丢失

但是,当我尝试在存储过程中只执行插入操作并手动执行更新查询时,一切都很好


为什么会发生这样的事情?

这应该没有问题

下面的代码按预期工作

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
最好的方法是使用,更新后的
触发器示例如下:

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

你能提供你曾经使用过的示例代码吗..存储过程不是这个场景中最好的方法,这里应该使用“触发器”。@YaqubAhmad-不,我的需要只是一个存储过程。我也知道使用触发器,但我需要从DMV做一些计算,所以我使用SP。