我正尝试在SQL Server 2008中编写一个存储过程,在将某些值插入表格后更新表格。在SQL Server 2008中插入一些值后更新表格
我的存储过程从DMV获取值并将它们存储在表中。在插入查询之后的相同过程中,我为同一个表编写了更新查询。
插入结果填充良好,但更新结果正在丢失。
但是当我尝试做只在存储过程中插入和我手动执行更新查询一切都很好。
有人可以帮我吗?为什么会发生这样的事情?
我正尝试在SQL Server 2008中编写一个存储过程,在将某些值插入表格后更新表格。在SQL Server 2008中插入一些值后更新表格
我的存储过程从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
感谢您的帮助 – 2013-03-13 11:28:29
最好的办法是使用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-14 05:45:31
你能提供您工作的示例代码.. – 2013-03-13 10:50:12
存储过程是不是在这种情况下,最好的办法,'触发器'应该在这里使用。 – 2013-03-13 12:44:27
@YaqubAhmad - 没有我的需要只是一个存储过程。我也知道使用触发器,但我需要从DMV做一些计算,所以我使用SP。 – 2013-03-14 05:45:12