Foxtable(狐表)用户栏目专家坐堂 → 求教,sql语句与触发器相关问题


  共有8959人关注过本帖树形打印复制链接

主题:求教,sql语句与触发器相关问题

帅哥哟,离线,有人找我吗?
baoxyang
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23140 威望:0 精华:1 注册:2009/3/31 11:25:00
求教,sql语句与触发器相关问题  发帖心情 Post By:2012/10/11 22:40:00 [只看该作者]

Dim sql1 As String = "UPDATE {库存表} set 单据号 =  Case WHEN ID = "& sql &" Then '"& s6 &"' Else 单据号 End ,虚存量 = Case WHEN 虚存量 <= "& s5 &" And ID = "& sql &" Then  0  WHEN 虚存量 > "& s5 &" And ID = "& sql &" Then 虚存量 - "& s5 &" Else 虚存量 End "
cmd.CommandText = sql1
cmd.ExecuteNonQuery() > 0

 

在表中建立一个UPdate关联表触发器时,有一列数据发生数据变化了.但inserted与deleted两个临时表中的数据怎会一致呢?


 回到顶部
帅哥哟,离线,有人找我吗?
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/10/11 22:46:00 [只看该作者]

把触发器代码贴出来

 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23140 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2012/10/11 23:05:00 [只看该作者]

USE [buchang]
GO
/****** 对象:  Trigger [dbo].[拣货]    脚本日期: 10/11/2012 22:46:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[拣货] ON [dbo].[库存表]
For  UPDATE
AS
    if Update(虚存量)
       begin
            Update 拣货表
            set 实拣量 = 实拣量 + c.虚存量 - b.虚存量,库存ID = b.ID,储位 = b.储位
            from 拣货表 a,Inserted b,deleted c
            where a.单据号 = b.单据号 and b.单据号 = c.单据号 and a.储位 = '' and a.商品代号 = b.商品代号 and b.商品代号 = c.商品代号 and a.货主代号 = b.货主代号 and b.货主代号 = c.货主代号
       end

最后结果实拣量为0,其实虚存量有数据变化.

[此贴子已经被作者于2012-10-11 23:06:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23140 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2012/10/11 23:08:00 [只看该作者]

如果把set 实拣量 = 实拣量 + c.虚存量 - b.虚存量,库存ID = b.ID,储位 = b.储位
修改1:set 实拣量 = 实拣量 + c.虚存量 ,库存ID = b.ID,储位 = b.储位


修改2:set 实拣量 = 实拣量 + b.虚存量 ,库存ID = b.ID,储位 = b.储位

这两种情况数据一样的.


 回到顶部
帅哥哟,离线,有人找我吗?
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/10/12 9:02:00 [只看该作者]

你在一楼sql语句中修改的是单据号的字段

但是在触发器里面的条件是针对更新虚存量的


 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23140 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2012/10/12 10:03:00 [只看该作者]

以下是引用在2012-10-12 9:02:00的发言:

你在一楼sql语句中修改的是单据号的字段

但是在触发器里面的条件是针对更新虚存量的

单据号及虚存量都有修改.第二个when case 是修改虚存量的.


 回到顶部
帅哥哟,离线,有人找我吗?
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/10/12 14:00:00 [只看该作者]

把第三行的 > 0去掉看看

 回到顶部