触发器某些语句不执行怎么回事啊?

暴走的车轮 2010-04-29 03:52:53

CREATE TRIGGER UpDateUnionSendOrder ON [dbo].[Cli_OrderFormList]
FOR INSERT
AS

Begin

Declare @OrderNum nvarchar(100),
@OrderProName nvarchar(50),
@OrderProNum nvarchar(50),
@OrderProPrice nvarchar(50),
@OldInfo nvarchar(500),
@ThisInfo nvarchar(200),
@NewInfo nvarchar(500)

Select @OrderNum = Ofl_OrderID,@OrderProName = Ofl_BrandName + '('+ Ofl_BrandType +','+Ofl_Color+')',@OrderProNum = Ofl_BuyNum, @OrderProPrice = convert(nvarchar,Ofl_ProPrice) from inserted

Select @OldInfo = IsNull(OrderInfor,'') from UnionSendOrder Where OrderNum = @OrderNum

Select @ThisInfo = '||'+@OrderProName+'@'+@OrderProPrice+'@'+@OrderProNum

If @OldInfo <> ''
Begin
Select @NewInfo = @OldInfo + @ThisInfo
End
Else
Begin
Select @NewInfo = @ThisInfo
End


---declare @Sql nvarchar(200)
---set @Sql = 'Update UnionSendOrder set OrderInfor = '''+@NewInfo+''' Where OrderNum ='''+ @OrderNum + ''''

Insert into NNNS(NNN) Values(@NewInfo)---这里可以正常执行
--exec(@Sql) ----我把SQL语句放查询分析器里也执行.....
Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---这里不执行

End


大家帮看看,我没写过几个触发器......是什么原因啊?问题在代码里....
...全文
267 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
结贴了.....
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 honkerhero 的回复:]
在Insert语句后输出一下错误号,看是不是出问题了
再就是在最后update后,也输出一下错误号,如果Insert没问题,最后还没有错误,就是中间的update执行了,只是没有合适数据,程序不可能会跳过一句去
[/Quote]

恩,很可能是没有合适数据,因为那个表由两个在不同表的触发器来维护的,一个是插入,另一个就是更新,我是维护的系统,不是自己开发的,估计可能是先后顺序有问题导致的不存在满足条件的记录...晕...
honkerhero 2010-04-29
  • 打赏
  • 举报
回复
在Insert语句后输出一下错误号,看是不是出问题了
再就是在最后update后,也输出一下错误号,如果Insert没问题,最后还没有错误,就是中间的update执行了,只是没有合适数据,程序不可能会跳过一句去
HolyPlace 2010-04-29
  • 打赏
  • 举报
回复

create table AAA
(
[username] varchar(25) null,
[username1] varchar(25) null,
[username2] varchar(25) null,
)


CREATE TRIGGER insertAAA on AAA
for insert
as
begin
insert into AAA(username,username1,username2) values('1','2','3')

--分开更新,多操作没问题
update AAA set username1 = '111'

update AAA set username2 = '222'
end


insert into AAA(username) values('000')


select * from AAA

我搞了一个最简单的按照你的步骤没问题,不知道你的表结构,测试数据到底有什么问题,这个代码看不出来
Teng_s2000 2010-04-29
  • 打赏
  • 举报
回复
应该不是没有执行而是 Where OrderNum = @OrderNum 没有符合条件,
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 holyplace 的回复:]
是不是你的测试值太特殊了
你把
Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum
参数都写成定值再测测
[/Quote]

我是实际环境下测试的啊。实际数据....刚我直接在触发器里执行固定的SQL语句没有变量的都不执行...
HolyPlace 2010-04-29
  • 打赏
  • 举报
回复
是不是你的测试值太特殊了
你把
Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum
参数都写成定值再测测
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 holyplace 的回复:]
引用 4 楼 kdalan 的回复:

引用 2 楼 qawszx 的回复:
CREATE TRIGGER UpDateUnionSendOrder ON [dbo].[Cli_OrderFormList]
FOR INSERT

Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---……
[/Quote]

我确定单独执行没问题啊.....我上面有把SQL单独拿出来执行....
HolyPlace 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kdalan 的回复:]

引用 2 楼 qawszx 的回复:
CREATE TRIGGER UpDateUnionSendOrder ON [dbo].[Cli_OrderFormList]
FOR INSERT

Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---这里不执行


----------……
[/Quote]
可以执行其他表的操作,insert也可以执行update,你确定你那最后一个单独执行没有问题?
vip__888 2010-04-29
  • 打赏
  • 举报
回复
检查约束。
还有你的表是否建立触发器
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhulong1111 的回复:]
仔细检查Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---这里不执行
这句话是否 字段没“,” 或者条件不成立
[/Quote]

这个语句我在查询分析器里可以正常执行的....
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qawszx 的回复:]
CREATE TRIGGER UpDateUnionSendOrder ON [dbo].[Cli_OrderFormList]
FOR INSERT

Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---这里不执行
[/Quote]

----------额....难道 insert触发器里不能执行其他表的更新操作啊?
zhulong1111 2010-04-29
  • 打赏
  • 举报
回复
仔细检查Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---这里不执行
这句话是否 字段没“,” 或者条件不成立
qawszx 2010-04-29
  • 打赏
  • 举报
回复
CREATE TRIGGER UpDateUnionSendOrder ON [dbo].[Cli_OrderFormList]
FOR INSERT

Update UnionSendOrder set OrderInfor = @NewInfo Where OrderNum = @OrderNum ---这里不执行
暴走的车轮 2010-04-29
  • 打赏
  • 举报
回复
就最后一句不执行.....郁闷...
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。

62,257

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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