当前位置: 代码迷 >> Oracle开发 >> ,保存在数据库里的数据莫名其妙的消失
  详细解决方案

,保存在数据库里的数据莫名其妙的消失

热度:165   发布时间:2016-04-24 06:23:28.0
求助,保存在数据库里的数据莫名其妙的消失
我做了一个批量修改的功能,数据是肯定存到数据库里了,提交给测试部测试也没什么BUG,可是当有别的classes文件替换之后
重启服务器,我之前修改的数据就会莫名其妙的变成空值,我问了他,他说他是没关服务器,就替换,然后重启
会不会有什么影响,谁知道到底怎么回事
------解决思路----------------------
要信任数据库,你存入的数据,他自己不会去改动。

有两个地方,你确认一下

1.数据写入数据库后,是否执行了 commit 语句; 这个好办,你用数据库 管理工具(PLSQL/DEV),查一下,数据是否提交成功。
2.别的会话,是否修改了你的数据。这个不好查,但是你可以写一触发器,把对某些表的改动,写一些日志,自然就知道是不是有改动了。
------解决思路----------------------
没有莫名其妙的问题。
只是没找到原因。
分析同楼上的。
最大的原因就是改写或没有提交
------解决思路----------------------
你可以写一触发器,把对某些表的改动,写一些日志,自然就知道是不是有改动了。
------解决思路----------------------
1、确认插入和检查看的是同一个数据库;
2、数据是否提交;
------解决思路----------------------
基本上都是写少了commit导致的,同意2楼的分析。核实一下是否是同一个用户同一个表。
------解决思路----------------------

SQL> create table temp(id int primary key , name varchar2(10),n2 int);
Table created
SQL> create table t_bak(id int , name varchar2(10),n2 int,crdate date default sysdate);
Table created
SQL> create trigger temp_ins
  2  before update on temp
  3  for each row
  4  begin
  5    insert into t_bak(id,name,n2) values(:new.id,:new.name,:new.n2);
  6  end ;
  7  /
Trigger created
SQL> begin
  2    insert into temp(id,name,n2) values(1,'zs',100) ;
  3    insert into temp(id,name,n2) values(2,'ls',101) ;
  4    insert into temp(id,name,n2) values(3,'ww',102) ;
  5    commit ;
  6  end ;
  7  /
PL/SQL procedure successfully completed
SQL> update temp set name = 'zhangs' where id = 1 ;
1 row updated
SQL> update temp set name = 'zhangsan' where id = 1 ;
1 row updated
SQL> select id , name , n2 , to_char(crdate,'yyyy-mm-dd hh24:mi:ss') crdate from t_bak ;
 ID NAME                                            N2 CRDATE
--- ---------- --------------------------------------- -------------------
  1 zhangs                                         100 2015-11-06 10:25:55
  1 zhangsan                                       100 2015-11-06 10:25:55
SQL> drop table temp purge ;
Table dropped
SQL> drop table t_bak purge ;
Table dropped

SQL>