日期:2014-05-18  浏览次数:20483 次

一个关于触发器性能的疑问
俺有3个表,a(相册表),b(图片表),c(评论表)
当在程序里删除多张b表的图片时,执行b上的触发器
    select   @aid   =   aid   from   deleted --相册id
select   @pid   =   pid   from   deleted     --图片id
    update   a   set   anum=anum   -   1   where   aid=@aid
                delete   from   c   where   pid   =   @pid   --删除c(评论表)表中此图片的评论
c(评论表)上有触发器
update   b   set   premark   =   premark   -   1   from   b   join   deleted   d   on   hl_ualbumpic.pid   =   d.pid
--有可能的删除方式 如delete   from   tab   where   id   in(...)
-----------
这样当删除b的图片时c上触发器又回来给b表相应的图片减少一个评论数,而此时b表该图片pid可能已经不存在了
如此循环会不会对性能有很大的损失
刚弄触发器不久,写了很多,现在回头发现很多类似的这种有点矛盾的地方

------解决方案--------------------
图片都被删除了,你还更新图片拥有的评论数量???

我想你的意思是更新图片所在相册的评论数量吧?