触发器未更新当前月份详细信息?

时间:2013-08-13 16:09:13

标签: sql sql-server tsql triggers

我每周更新一个名为Table_Lookup的表。所以我在该表上创建了2 triggers,如果插入了新记录,则触发触发并将新数据插入另一个名为Table_Lookup_Change的表中。

注意:我在Table_Lookup中有8月份的数据,但是当触发器被触发时,它仅插入数据,直到7月它缺少一个月的数据。我在过去的两周工作,我无法弄清楚问题。你们可以查看我的代码吗..

2 个答案:

答案 0 :(得分:0)

您的触发器具有结构

if (exists(select 1 from deleted))
begin
   .
   .
end
else
begin
   .
   .
end

因为您有deleted(旧值)和insert(新值,包括那些通过UPDATE修改的值)。

你需要做的是像

if (exists(select 1 from deleted))
begin
   .
   .
end

if (exists(select 1 
           from inserted 
           left join deleted on inserted.MediaFactor_ID = deleted.MediaFactor_ID
           where deleted.MediaFactor_ID
   )
begin
   /*update or insert as needed. filtering out those from deleted table*/

end

答案 1 :(得分:0)

if(存在(从删除中选择1)) 开始    。    。 端

if(存在(选择1)            从插入            在inserted.MediaFactor_ID = deleted.MediaFactor_ID上删除了左连接            其中A.FLMNet不为空                 和B.Media无效                 和B.Year是空的                 和B.Month是空的                 和B.Factor为空                 和B.FLMNet为空                 和A.FLMNet不为空)    ) 开始    / 根据需要更新或插入。过滤掉已删除表格中的内容 /