我正嘗試在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