在SQL Server 2008中将某些值插入表后更新表
我试图在SQLServer2008中编写一个存储过程,在将一些值插入到表中后更新表 我的存储过程从DMV中获取值并将其存储在表中。在插入查询之后的相同过程中,我为同一个表编写了更新查询 插入结果可以很好地填充,但更新的结果会丢失 但是,当我尝试在存储过程中只执行插入操作并手动执行更新查询时,一切都很好在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
为什么会发生这样的事情?这应该没有问题 下面的代码按预期工作
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。