我们做了一个中间件网数据库中实时的插入数据,但现在数据量很大,达到了几百万条,我想设置一下使数据记录不超过一个值如1000000条,如果超过这个值就自动的使数据表中时间最早进入的数据删除,请问该怎么做呢?

解决方案 »

  1.   

    trigger实现,或者在写入的时候判断count值,大于1000000,就按条件删除一部分.
    ============================================================
    Oracle 高级技术 超难的SQL语句,吓人啊。
      

  2.   

    写一个trigger,insert之前判断count值是否大于你的设定值。
    大于的话,删除不要的数据,否则,insert数据即可
      

  3.   

    感觉使用trigger来处理的话不妥,毕竟需要反复地进行全表扫描。
    通过job+存储过程来处理就可以了。
      

  4.   

    那存储过程或者trigger该怎么写啊,能举个简单的例子吗,我是菜鸟啊
      

  5.   

    创建最大值1000000的循环序列 seq1
    使用该序列的列iddelete from t where id = seq1.nextval;
    insert into t(id,...)values(seql.currval,...);或者begin
      update t set ...
      where id = seq1.nextval
    exception
      when no_data_found then
        insert into t(id,...)values(seql.currval,...);
    end;