首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个关于触发器性能的疑问解决思路

2012-01-16 
一个关于触发器性能的疑问俺有3个表,a(相册表),b(图片表),c(评论表)当在程序里删除多张b表的图片时,执行b

一个关于触发器性能的疑问
俺有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可能已经不存在了
如此循环会不会对性能有很大的损失
刚弄触发器不久,写了很多,现在回头发现很多类似的这种有点矛盾的地方

[解决办法]
图片都被删除了,你还更新图片拥有的评论数量???

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

热点排行