我正在尝试在SQL Server2008中编写一个存储过程,它在向表中插入一些值之后更新表。
我的存储过程从DMV获取值并将其存储在表中。在插入查询之后的相同过程中,我为同一个表编写了一个更新查询。
插入结果填充得很好,但更新的结果正在丢失。
但是,当我尝试在存储过程中只执行插入操作,并且手动执行update查询时,一切都很正常。
为什么会发生这样的事情?
发布于 2013-03-13 19:08:40
这应该不会有什么问题。
下面的代码按预期工作。
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 21:05:07
最好的方法是使用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
ENDhttps://stackoverflow.com/questions/15383132
复制相似问题