收到用户请求,需批量将存储期限更新到K3物料属性,原以为很简单….
1、查询存储期限对应的字段,在[系统设置]-[物料]-[自定义],找到[存储期限]字段
2、查询物料属性关联的数据库表,f_176对应“存储期限”
SELECT f_176,* FROM T_ICItem --HERE FNumber='11.05.03.00510'
3、将用户待更新数据Excel(下图)导入数据库临时表
参考链接:Excel表怎么导入SQL Server2012
4、更新物料数据,执行
UPDATE T_ICItem SET f_176=c.物料存储期限 FROM t_cunchuqixian c WHERE FNumber=c.物料编码 AND FNumber='11.05.03.00510' AND c.物料存储期限 IS NOT NULL
产生错误提示:
不允许使用 UPDATE,因为该语句会更新视图 "T_ICItem",而该视图参与联接并且有一个 INSTEAD OF UPDATE 触发器。
5、原来是T_ICItem视图,没法直接更新,于是查找视图该字段的源表
EXEC SP_HELPTEXT t_ICItem
6、找到F_176关联在表 t_ICItemCustom中,于是直接更新该表即可
--先更新FItemID
UPDATE t_cunchuqixian SET 物料类型= c.FItemID FROM T_ICItem c WHERE c.FNumber=t_cunchuqixian.物料编码
UPDATE t_ICItemCustom
SET F_176 = 物料存储期限
FROM dbo.t_cunchuqixian c
WHERE 物料类型 = FItemID
AND c.物料存储期限 IS NOT NULL;
7、其实,是很简单…