1

我有一个表Table_Lookup,它每周更新一次。因此,我triggers在该表上创建了 2,如果插入了新记录,则会触发触发器并将新数据插入另一个名为Table_Lookup_Change.

注意:我有截至 8 月的数据,Table_Lookup但是当触发触发器时,它只插入到 7 月的数据,它缺少一个月的数据。我从过去两周开始工作,我无法弄清楚问题所在。你们能看看我的代码吗..

4

2 回答 2

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
于 2013-08-13T16:25:26.760 回答
0

if (exists(select 1 from deleted)) 开始。. 结尾

if (exists(select 1 from inserted left join deleted on inserted.MediaFactor_ID = deleted.MediaFactor_ID 其中 A.FLMNet 不为空,B.Media 为空,B.Year 为空,B.Month 为空,B.Factor 为null 且 B.FLMNet 为 null 且 A.FLMNet 不为 null) )根据需要开始/更新或插入。从已删除的表中过滤掉那些/

结尾

于 2013-08-14T14:43:55.010 回答