oracle sql语句——提示无法修改与非键值保存表对应的列
update(selectt.bookida,q.depidbfrombookt,depqwheret.depid=q.id)seta=b;执行后提示“提示无法修改与非键...
update (select t.bookid a,q.depid b from book t,dep q where t.depid=q.id)
set a = b;
执行后 提示 “提示无法修改与非键值保存表对应的列”,搜索网上的解决方法,说要建primary key,但我查了一下,我的两个表都是有primary key的,是什么原因引起的呢????
谢谢a5202003的回答,如果把(select t.bookid a,q.depid b from book t,dep q where t.depid=q.id)放到一个临时表了,我怎么把更新后的数据放到原先的表呢?? 展开
set a = b;
执行后 提示 “提示无法修改与非键值保存表对应的列”,搜索网上的解决方法,说要建primary key,但我查了一下,我的两个表都是有primary key的,是什么原因引起的呢????
谢谢a5202003的回答,如果把(select t.bookid a,q.depid b from book t,dep q where t.depid=q.id)放到一个临时表了,我怎么把更新后的数据放到原先的表呢?? 展开
展开全部
其实很简单 只要在你的语句中加入一个强制性语句就可以
update (select /*+ BYPASS_UJVC */ t.bookid a,q.depid b from book t,dep q where t.depid=q.id)
set a = b;
update (select /*+ BYPASS_UJVC */ t.bookid a,q.depid b from book t,dep q where t.depid=q.id)
set a = b;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update book t
set t.bookid = (select depid from dep q where t.depid=q.id
and rownum <2)
这样应该就可以了
最好去掉rownum <2 这个东东,再加上唯一性条件
set t.bookid = (select depid from dep q where t.depid=q.id
and rownum <2)
这样应该就可以了
最好去掉rownum <2 这个东东,再加上唯一性条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询