导航
  • 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ
  • 问答

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

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


大家帮看看,我没写过几个触发器......是什么原因啊?问题在代码里....
...全文
133 点赞 收藏 16
写回复
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
就最后一句不执行.....郁闷...
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告