Foxtable(狐表)用户栏目专家坐堂 → sql触发器中引用inse rted表出错


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

主题:sql触发器中引用inse rted表出错

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17128 威望:0 精华:0 注册:2014/7/29 19:09:00
sql触发器中引用inse rted表出错  发帖心情 Post By:2018/4/19 20:19:00 [显示全部帖子]

下面的代码是sql数据库"仓库"表的update触发器语句,目的就是仓库表中的仓库名称变更时更新所有有仓库字段的表中的仓库名称
通过游标遍历每一个有仓库字体的表然后用动态sql语句更新仓库名称

代码写在这里总出错不能上传,只好用附件上传了

谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:触发器代码.txt

执行后显示错误
对象名 'inserted' 无效。
请教引用inserted表那里要怎么写?

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


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

按老师说的先将inserted存入临时表就可以了,谢谢
另外想请教一下,我的项目中有很多类似的运用,如产品编码表的产品编码变更时更新所有数据库表中有产品编码字段的表中的相应值
我目前只知道先查出有产品编码字段的表,然后用游标遍历表名用动态sql语句每个表更新,这种方法是不是很不好?
请教老师还有其他方法吗?你说的尽量直接执行SQL语句这种需求要怎么实现呢? 讲讲思路也行.
谢谢!

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


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

但如果不用动态sql,这种表名是变量的sql语句怎么写都不正确就像下面这样
 UPDATE ' + @tbname +'
            SE T 仓库 = a.仓库名称
            FROM inserted a
                INNER JOIN Deleted b
                    ON a._Identify = b._Identify
            WHERE 仓库 = b.仓库名称;

总是了错
update后面表名是变量即红色那里用普通sql语句要怎么写呢?

 回到顶部