触发器冲突怎么解决?

ytzz 2006-04-11 04:47:02
表Writing_Info里有触发器Writing_Taxis_getWritingTaxis如下

---自动在插入新作品的时候创建作品的排行
CREATE TRIGGER Writing_Taxis_getWritingTaxis ON [dbo].[Writing_Info]
FOR INSERT
AS

begin
insert writing_taxis (taxisCategoryid,writingid) (select a.taxiscategoryid,b.writingid from Writing_taxis_category a,inserted b)
end

表writing_chapter里有触发器Writing_Info_getLength如下

----自动修改文章长度
CREATE TRIGGER Writing_Info_getLength
ON Writing_chapter
For insert,update
as
if @@rowcount=0 return

if exists(select a.writingid from inserted a,writing_info c where a.writingid=c.writingid)

begin
update c set c.length=c.length+a.length from inserted a,writing_info c where a.writingid=c.writingid
end

当没有第一个触发器的时候,可以正常的根据writing_chapter里的length统计出作品的长度并且存放到writing_info这个表里.但是加上第一个触发器后,每次更新writing_chapter表的时候,会把writing_info里的length这个字段的值给清空.很是郁闷.请教怎么解决?

...全文
214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xeqtr1982 2006-04-11
  • 打赏
  • 举报
回复
学习 :)
zjcxc 元老 2006-04-11
  • 打赏
  • 举报
回复
指定触发的顺序就可以了:
exec sp_settriggerorder
@triggername = 'Writing_Taxis_getWritingTaxis'
, @order = 'first'
, @stmttype = 'insert'


exec sp_settriggerorder
@triggername = 'Writing_Info_getLength'
, @order = 'last'
, @stmttype = 'insert'

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧