以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 触发器中字段值的变化如何引用? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121992) |
-- 作者:HappyFt -- 发布时间:2018/7/17 9:17:00 -- 触发器中字段值的变化如何引用? 想根据盘点表中的主管字段第一次赋值时生成盘点调整表,如下SQL语句 ALTER TRIGGER [dbo].[trup_pdb] SELECT @New = a.主管,
...生成盘点调整表的语句
但上面红色的条件没起作用,因为下面生成表的语句没有执行,应该怎么写才可以? 谢谢! |
-- 作者:有点甜 -- 发布时间:2018/7/17 10:31:00 -- 更新的动作你可以分2步理解,先delete,再insert
查表即可,如 https://www.cnblogs.com/naniannayue/archive/2011/04/22/2024830.html
|
-- 作者:有点甜 -- 发布时间:2018/7/17 10:41:00 -- 你执行的sql语句应该没问题的,你输出各个值看一下。再有就是,你update了多少行数据?
SELECT @New = a.主管, |
-- 作者:HappyFt -- 发布时间: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 -- 发布时间:2018/7/17 10:54:00 -- 不确定,因为填写时操作者可能同时操作几张表填写主管的名字再保存(是通过sql语句用事务一次性同时保存的) 即使select时只取到最后一个表的值也应该至少生成一张新的盘点整表才是,但是一个都没有? 触发器中的值要如何返回到前台来,比如想看一下@New,与@Old两个的值? 谢谢!
|
-- 作者:有点甜 -- 发布时间:2018/7/17 12:28:00 -- 1、输入你获取到的变量的值;
2、多行数据只触发一次触发器的;
3、你应该循环各行数据分别判断的。 |
-- 作者:HappyFt -- 发布时间:2018/7/17 19:29:00 -- 其他都没问题,我是问select @New = .... 得到@New的值后,在触发器中要如何写才能将这个值反馈到前台来,在前台界面上只是改变主管的值保存后触发器就运行了,比如前台想用msgbox()来显示这个改变的值分怎么样才做的到?
|
-- 作者:有点蓝 -- 发布时间:2018/7/17 20:20:00 -- 前台不是应该从表格里取值么,判断行的rowstate |
-- 作者:有点甜 -- 发布时间:2018/7/18 10:11:00 -- 数据库和前台是无法交流的。
你可以在beforesavedatarow事件检测旧值新值 http://www.foxtable.com/webhelp/scr/2369.htm
|