oracle删除表中全部数据的问题

[复制链接]
查看11 | 回复4 | 2017-9-5 08:34:33 | 显示全部楼层 |阅读模式
1、oracle 如果使用同一个终端,比如sql*plus ,如果进行了 delete 操作,但是没有commit; 那么在同一个终端是可以看到delete 已经被操作的结果。 但是其他的终端却看不到这个执行结果。就像jdbc 仍然能够查询到数据。2、你把 sql*plus 重启之后 就不是以前那个终端了。所以就又不能看到以前操作的结果了。所以就可以看到以前被删除的数据了。3、truncate table 是物理操作,不需要commit。 所以你在哪里看到的都是一致的数据。但是他却不能回滚。希望对你有帮助。...
回复

使用道具 举报

千问 | 2017-9-5 08:34:33 | 显示全部楼层
你在sqlplus上 用delete 删除表应该没有 commit,所以 其他session查询的仍然是 原来数据。delete是DML语句,要有commit。清空表 用truncate 无需commit...
回复

使用道具 举报

千问 | 2017-9-5 08:34:33 | 显示全部楼层
我好像也遇到这样类似问题,好像是查询表时没有数据,然后在java中插入数据时,说之前删除的数据还在,不让插入,后来我看了user_tables视图的num_rows字段还真不是0,后来用语句analyze table 表名 compute statistics,num_rows字段变为0了,重启java项目的服务就好了,不知道对你的情况有帮助么,只能这样了...
回复

使用道具 举报

千问 | 2017-9-5 08:34:33 | 显示全部楼层
delete会在内存中 标记为删除,commit后才会写入数据库!...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行