删除数据时,出现01752错误!不能从一个没有键值保存表的视图中删除

DrinkT 2007-01-10 03:27:12
delete from
(select * from (select rownum nn,t.* from table_1 t) z
where z.nn between 1 and 100)

括号内的 分页查询 可以查出来数据1-100条,但是删除的时候出现
ORA-01752:不能从一个没有键值保存表的视图中删除

请问这个是什么意思啊?如何解决

这个表没有主键也没有和其它表关联,我也设置过主键,依旧如此

解决就给分,请高手指点小菜!
...全文
2424 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Well 2008-07-08
  • 打赏
  • 举报
回复
支持!!
wiler 2007-01-11
  • 打赏
  • 举报
回复
应该是:
delete from table_1 a
where exists
(
select * from (select rowid rid,rownum nn,t.* from table_1 t) z
where z.nn between 1 and 100 and a.rowid=z.rid
)
DrinkT 2007-01-11
  • 打赏
  • 举报
回复
谢谢wiler,可以删除!但是速度慢,比直接清空表里1万条数据还慢很多。
可能是涉及到rowid吧。
同时也谢谢tgm78。
给分结帖
DrinkT 2007-01-11
  • 打赏
  • 举报
回复
回复wiler:

我试了,还是提示错误。
ORA-01446:无法从含DISTINCT,GROUP BY等执教的视图中选择ROWID

请问是不是不能这样排序删除呢?

我用得是PL/SQL 7
wiler 2007-01-10
  • 打赏
  • 举报
回复
lz 想删除什么?虚拟表z吗?怎么可能删除呢?
建议改为:
delete from table_1 a
where exists
(
select * from (select rowid rid,rownum nn,t.* from table_1 t) z
where z.nn between 1 and 100 and a.rowid=z.rowid
)
DrinkT 2007-01-10
  • 打赏
  • 举报
回复
ORA-01747:无效的用户.表.列,或者列规格

试了,出现如上错误。怎么办呀?
tgm78 2007-01-10
  • 打赏
  • 举报
回复
delete from
(select * from (select rownum nn,t.* from table_1 t) z
where z.nn between 1 and 100) vv where vv.* is not null;


试试

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧