我在PL/SQL中使用delete from table_name 删除表中的数据,按F8执行后,数据删除.
上面的操作是不是相当于truncate table_name.delete 在F8后要执行 commit吗,我没用commit 也发现数据被清除了.请高手指点一下.
上面的操作是不是相当于truncate table_name.delete 在F8后要执行 commit吗,我没用commit 也发现数据被清除了.请高手指点一下.
truncate table table_name操作不进入日志.delete 要执行 commit.否则数据并没有被删除,还可以rollback
你执行了 delete from table_name
没有进行 commit
然后 select from table_name
而看到表中没有记录了,这是假像, 因为你仍在同一个事务中.你可以尝试,新开一个pl/sql窗口(窗口2), 再执行 select * from table_name 发现记录还在.因为窗口1中做的操作没有提交.在你在窗口1中执行 commit;
然后再看窗口2中的select .. 这时才是真的没有数据.
在你的窗口1没有commit 之前,你执行 rollback;
再select ,可以看到你的数据还在,因为操作被回退了.而truncate table 清表, 是不能回退的, 即, 你在窗口1,执行了 truncate table_name
在窗口2查询时,查不到记录.
说到这里吧, 具体的请参见相关文档.
truncate不写日志的。删掉的数据是不能恢复的你可以用show all查看auto commit是不是等于on。 如果是的话就是自动提交。如果是off的话就要手动提交的
truncate 后的数据没有办法恢复