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

暴走的车轮 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


大家帮看看,我没写过几个触发器......是什么原因啊?问题在代码里....
...全文
253 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
就最后一句不执行.....郁闷...

62,243

社区成员

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

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

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

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