有关数据库insert触发器游标语句,求大牛帮助看有错误没

尘世茫茫小书童 2014-11-23 02:50:05
CREATE TRIGGER T_check_weight
on TrItem
for INSERT
AS
BEGIN
DECLARE @shopkeeperNum VARCHAR(50);
DECLARE @bcode VARCHAR(30);
DECLARE @restWeight NUMERIC(10);
DECLARE cur_insert CURSOR FOR
SELECT c.num shopkeeperNum,bcode,SUM(qty) from inserted a,TrTotal b, tc_shopkeeper c WHERE a.SaleNo = b.SaleNo and b.EmployeeID = c.id GROUP BY c.num, bcode;
OPEN cur_insert;
fetch next from cur_insert into @shopkeeperNum,@bcode,@restWeight --读取下一行
WHILE @@fetch_status = 0
begin
UPDATE tc_restweight set restWeight = restWeight - @restWeight
WHERE bcode = @bcode and shopkeeperNum = @shopkeeperNum
fetch next from cur_insert into @shopkeeperNum,@bcode,@restWeight --读取下一行
end
CLOSE cur_insert
DEALLOCATE cur_insert

END
...全文
332 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
习惯性蹭分 2014-11-23
  • 打赏
  • 举报
回复
引用 3 楼 tian_e_rou 的回复:
找到了问题 就是 DECLARE cur_insert CURSOR FOR SELECT c.num shopkeeperNum,bcode,SUM(qty) from inserted a,TrTotal b, tc_shopkeeper c WHERE a.SaleNo = b.SaleNo and b.EmployeeID = c.id GROUP BY c.num, bcode; 当中使用了inserted临时表,如果不使用这个临时表的话就收银机就可以触发insert触发器。那么 如果我不用这个的话改怎么写呢。(ps:收银机这边是收银机厂家写的,我这边不能得到它的代码 . .)
应该跟inserted临时表没关系吧,inserted是触发触发哭系统生成的。 看下是不是后面两个表当时没有对应数据。
  • 打赏
  • 举报
回复
找到了问题 就是 DECLARE cur_insert CURSOR FOR SELECT c.num shopkeeperNum,bcode,SUM(qty) from inserted a,TrTotal b, tc_shopkeeper c WHERE a.SaleNo = b.SaleNo and b.EmployeeID = c.id GROUP BY c.num, bcode; 当中使用了inserted临时表,如果不使用这个临时表的话就收银机就可以触发insert触发器。那么 如果我不用这个的话改怎么写呢。(ps:收银机这边是收银机厂家写的,我这边不能得到它的代码 . .)
Neo_whl 2014-11-23
  • 打赏
  • 举报
回复
insert触发器当然要对指定表执行了insert操作才能触发,你的收银机刷卡记录记录到数据库中执行了哪些语句?
  • 打赏
  • 举报
回复
目前 这段语句 如果手动写Insert 语句测试的话可以运行,但是通过收银机刷卡时 就没有效果,大牛们在哪里,求助

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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