跨数据库triger的问题

golden24kcn 2010-03-11 09:30:26
建了一个跨数据库的triger


CREATE TRIGGER [dbo].[CW_XTKe_trigger] ON [dbo].[CW_XueFen_Detail]
WITH EXECUTE AS CALLER
AFTER INSERT
AS
DECLARE @elective_id varchar (50)

--选课ID
DECLARE @flag int

--支付状态 0 缴费 1 退费

DECLARE @teachclass_id varchar (50)

-- 教学班ID



SELECT @flag = i.flag,
@elective_id = i.creditID
FROM inserted i


IF (@flag = 0)

BEGIN

UPDATE [CSDN_ColligateCharge_SS]..t_edu_TeachClassStudentList
SET paied = 1
WHERE ID =@elective_id

END

ELSE

BEGIN
select @teachclass_id = teachclass_id from [CSDN_ColligateCharge_SS]..t_edu_TeachClassStudentList
where ID =@elective_id

DELETE
FROM [CSDN_ColligateCharge_SS]..t_edu_TeachClassStudentList
WHERE ID =@elective_id

UPDATE [CSDN_ColligateCharge_SS]..t_edu_TeachClassInfo
SET current_capacity = current_capacity - 1
WHERE ID = @teachclass_id

END


99.9%的情况下,这个triger运行正常,能更新或删除数据,可是有0.1%的情况下会失效,导致数据不能同步。

烦请哪位大侠给指点一下,分析一下问题的原因所在
...全文
94 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
golden24kcn 2010-03-19
  • 打赏
  • 举报
回复
没人关注了?
golden24kcn 2010-03-11
  • 打赏
  • 举报
回复
不能回滚,只在触发器里加上回滚数据不就丢失了吗,况且此数据库是别人系统的.....
--小F-- 2010-03-11
  • 打赏
  • 举报
回复
建议加上回滚的事务..
dawugui 2010-03-11
  • 打赏
  • 举报
回复
引用 7 楼 ldslove 的回复:
难道触发失败不回滚吗。

你得在触发器中加入回滚的事务才行.
东那个升 2010-03-11
  • 打赏
  • 举报
回复
难道触发失败不回滚吗。
sql_sf 2010-03-11
  • 打赏
  • 举报
回复
xue
xi
-狙击手- 2010-03-11
  • 打赏
  • 举报
回复
trigger

加上应该没事吧,正好应用程序报错重新处理就是了
dawugui 2010-03-11
  • 打赏
  • 举报
回复
99.9%的情况下,这个triger运行正常,能更新或删除数据,可是有0.1%的情况下会失效,导致数据不能同步。

这种情况通常是由于网络原因造成的,很难找到问题所在,帮顶.
golden24kcn 2010-03-11
  • 打赏
  • 举报
回复
回复1数、2楼

是在同一台服务器,应该不是网络问题,这个triger是建在别人系统的数据库上的,不敢加事务.....

SQL77 2010-03-11
  • 打赏
  • 举报
回复
导致数据不能同步。网络问题?要不加个事务写一起?
andysun88 2010-03-11
  • 打赏
  • 举报
回复
可能是网络的问题吧,个人的想法。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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