+ -
当前位置:首页 → 问答吧 → 派生表 'U' 不可更新,因为修改会影响多个基表。请问要怎么弄?

派生表 'U' 不可更新,因为修改会影响多个基表。请问要怎么弄?

时间:2011-12-09

来源:互联网

SQL code

UPDATE U SET U.RK=1,U.SG=0,U.date_SG=null,U.createBy=dbo.GetCheckTab(createBy,0)+','+dbo.GetCheckTab(createBy,1) 
,U.Remark=isnull(U.Remark,'') + '手工:上挂到入库(admin,2011-12-9 14:34:48)。'
,U.SG_ID=null,U.SG_Name=null 
FROM 
( 
    SELECT B.SG,B.RK,B.date_SG,B.createBy,B.Remark,C.SG_ID,C.SG_Name FROM LK_ItemCodeAndScanCode as A 
    left join lK_StoreStatusReport as B on A.steelCode=B.steelCode 
    left join LK_JobNumAndScanCode as C on C.steelCode = A.steelCode 
    where B.status!=2 and A.ID in (79582)
 ) as U 



添加了这个后: U.SG_ID=null,U.SG_Name=null 
就出现了。派生表 'U' 不可更新,因为修改会影响多个基表。请问要怎么弄?

作者: zly22169846   发布时间: 2011-12-09

晕,这个你需要遵守规则啊

一个表一个表的进行更新吧。

作者: HEROWANG   发布时间: 2011-12-09

怎么可以这样更新,多表的话就要分开去按条件更新,怎么能这么写,看看基础语法吧!

作者: AcHerat   发布时间: 2011-12-09

update 更新实表,不能更新派生表

作者: ssp2009   发布时间: 2011-12-09

看来是语法限制了。
我觉得以后应该可以实现这个东西。
虽然是派生表,但字段确不是主键字段,也不是连接字段。

按理说更新了也不会对连接产生什么影响。

作者: zly22169846   发布时间: 2011-12-09

多表联合,
只能更新其中一个表的数据。就像我上面一样。只更新一个表就能通过 。
但不能同时更新2个表的数据。
有这样的限制。呵。

作者: zly22169846   发布时间: 2011-12-09

SQL code
 ;with u as
(   SELECT B.SG,B.RK,B.date_SG,B.createBy,B.Remark,C.SG_ID,C.SG_Name FROM LK_ItemCodeAndScanCode as A 
    left join lK_StoreStatusReport as B on A.steelCode=B.steelCode 
    left join LK_JobNumAndScanCode as C on C.steelCode = A.steelCode 
    where B.status!=2 and A.ID in (79582)
)

UPDATE U SET U.RK=1,U.SG=0,U.date_SG=null,U.createBy=dbo.GetCheckTab(createBy,0)+','+dbo.GetCheckTab(createBy,1) 
,U.Remark=isnull(U.Remark,'') + '手工:上挂到入库(admin,2011-12-9 14:34:48)。'
,U.SG_ID=null,U.SG_Name=null 
FROM 
u

作者: fredrickhu   发布时间: 2011-12-09