Foxtable(狐表)用户栏目专家坐堂 → 触发器中字段值的变化如何引用?


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

主题:触发器中字段值的变化如何引用?

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
触发器中字段值的变化如何引用?  发帖心情 Post By:2018/7/17 9:17:00 [显示全部帖子]

想根据盘点表中的主管字段第一次赋值时生成盘点调整表,如下SQL语句

ALTER TRIGGER [dbo].[trup_pdb]
ON [dbo].[盘点表]
AFTER UPDATE
AS
BEGIN
    --生成盘点调整表
    IF UPDATE(主管)
    BEGIN
        DECLARE @New NVARCHAR(8);
        DECLARE @Old NVARCHAR(8);
        DECLARE @YM NVARCHAR(8);
        DECLARE @ck NVARCHAR(16);
        DECLARE @cg NVARCHAR(8);
        DECLARE @datepd DATETIME;
        DECLARE @bh NVARCHAR(16);

        SELECT @New = a.主管,
            @Old = b.主管,
            @YM = a.年月,
            @ck = a.仓库,
            @cg = a.仓管,
            @bh = a.盘点编号,
            @datepd = a.盘点日期
        FROM inserted a
            INNER JOIN Deleted b
                ON a._Identify = b._Identify;
        IF @New IS NOT NULL AND @Old IS NULL  --如果主管字段第一次赋值
        BEGIN

 

        ...生成盘点调整表的语句


        END;
    END;
END;

 

但上面红色的条件没起作用,因为下面生成表的语句没有执行,应该怎么写才可以?

谢谢!


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/7/17 10:48:00 [显示全部帖子]

但这样同时查询出来也应该可以啊,与2楼好像没有本质的区别,只是将两个条件写在一起表示一定是第一次主管有值时
      SELECT @New = a.主管,
            @Old = b.主管,
            @YM = a.年月,
            @ck = a.仓库,
            @cg = a.仓管,
            @bh = a.盘点编号,
            @datepd = a.盘点日期
        FROM inserted a
            INNER JOIN Deleted b
                ON a._Identify = b._Identify;
        IF @New IS NOT NULL AND @Old IS NULL  --如果主管字段第一次赋值

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/7/17 10:54:00 [显示全部帖子]

不确定,因为填写时操作者可能同时操作几张表填写主管的名字再保存(是通过sql语句用事务一次性同时保存的)
即使select时只取到最后一个表的值也应该至少生成一张新的盘点整表才是,但是一个都没有?
触发器中的值要如何返回到前台来,比如想看一下@New,与@Old两个的值?
谢谢!

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/7/17 19:29:00 [显示全部帖子]

其他都没问题,我是问select @New  = ....
得到@New的值后,在触发器中要如何写才能将这个值反馈到前台来,在前台界面上只是改变主管的值保存后触发器就运行了,比如前台想用msgbox()来显示这个改变的值分怎么样才做的到?

 回到顶部