创建触发器报错。请高手帮我找下

acol 2010-11-13 04:48:35

create TRIGGER trigger_ordersInsert
ON [dbo].[PE_orders]
for insert
AS
declare @count int,@username varchar(50),@orederId varchar(50),@orderNum varchar(50)
select top 1 @username=inserted.username,@orederId=Inserted.orederId
,@orderNum=inserted.orederNum,@count=pe_orderItem.Amount
from inserted inner join PE_OrderItem on inserted.orderId=pe_orderItem.orderId order by Inserted.orederId desc

if @orederId<>null--当LoginTimes字段被更新时,才会触发此触发器 --更新登录赠送积分
BEGIN

declare @i int,@id int
set @i=0
while @i<@count
begin
update PE_CouponItem set username=@username,orderId=@orderNum where [id]=@id
end

END


错误提示:
消息 207,级别 16,状态 1,过程 trigger_ordersInsert,第 7 行
列名 'orederId' 无效。
消息 207,级别 16,状态 1,过程 trigger_ordersInsert,第 8 行
列名 'orederNum' 无效。
消息 207,级别 16,状态 1,过程 trigger_ordersInsert,第 9 行
列名 'orederId' 无效。
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 csy19871106 的回复:]
那重新问。如何调试触发器啊、。 我insert的时候好像没启动触发器。但不知道哪错了。要调试
[/Quote]

在insert触发器中打印一行字符,在查询分析器中执行,看有没有输出该行字符..
Harmony_liu 2010-11-15
  • 打赏
  • 举报
回复
试试这个:
1。 一般我会写:
create TRIGGER trigger_ordersInsert
ON [dbo].[PE_orders]
BEFORE insert --OR AFTER insert
AS
。。。
2。一般我会先
declare @count int,@username varchar(50),@orederId varchar(50),@orderNum varchar(50)
select top 1 @username=inserted.username,@orederId=Inserted.orederId
from inserted 。。。
先不使用:inner join
因为join可能会丢失数据如果不是一一对应的。。。
3。这个语句中:

declare @i int,@id int
set @i=0
while @i<@count
begin
update PE_CouponItem set username=@username,orderId=@orderNum where [id]=@id
end
@id 没有赋值,所以默认是NULL值
acol 2010-11-13
  • 打赏
  • 举报
回复
那重新问。如何调试触发器啊、。 我insert的时候好像没启动触发器。但不知道哪错了。要调试
acol 2010-11-13
  • 打赏
  • 举报
回复
晕死。 列明打错了。

22,298

社区成员

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

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