我想在每个月初向数据库插入一些记录,可以用触发器吗?如果不能,有什么好的方法吗?

解决方案 »

  1.   

    能说具体一点吗?我不知道job是什么?
      

  2.   

    JOB是完成一些定时作业的。使用调用你的程序就OK了
      

  3.   

    1.建一个存储过程。
    2.用DBMS_JOB包调度每月执行这个过程。
    设该存储过程为:tmp_insert
    那么,递交调度作业:
    dbms_job.isubmit(101,'tmp_insert;','add_months(trunc(sysdate,''MM''),1)+1+2/24',sysdate);说明:设置tmp_insert在每月2日凌晨两点自动执行,第一次执行时间为递交作业后,指定作业号为101(可以是任何数字,只要不重复)看作业设置情况:
    select * from user_jobs
      

  4.   

    --例子:每早8点执行名为PROCEDURE_NAME 的过程
    --job包的具体用法 参见 http://www.oradb.net/pack/pack_001.htm
    VARIABLE JOB1 NUMBER;BEGIN
    DBMS_JOB.SUBMIT(:JOB1,'PROCEDURE_NAME;',(TRUNC(SYSDATE+1)+8/24),'SYSDATE+1');
    COMMIT;
    END;
    /
      

  5.   

    用job是最好最方便的,触发器不能做到。
      

  6.   

    使用JOB的时候,涉及到JOB并发数量的维护问题(可能你建立了一个JOB,但是实际上没有定时启动)
    除了job以外,我认为还有一种方法可以考虑:在unix系统上,可以使用crontab,这个设置也比较简单
    在windows上,可以使用定时启动程序的工具
      

  7.   

    你可以每天或每小时跑一次job ,
    参数设置在一个系统表里面或者根据系统时间来判断是否需要执行 这些都可以在存储过程里面控制
      

  8.   

    后台任务也可以么 job太多了不好
      

  9.   

    在程序里可以写个界面,通过界面来获取想要设置的值,然后connect到数据库,通过以下语句实现对job的修改(请楼主自己测试):
    关于oracle作业(job)的修改:
    关于DBMS_JOB的函数(在程序包的SYS下面)包括创建作业,删除作业和
    修改作业的函数:
    其中修改作业的函数分成了具体修改哪一项的函数:
    1)修改调用的过程(修改要执行的操作):execute dbms_job.what(job,what);
    2)修改下次执行的时间:execute dbms_job.next_date(job,next_date);
    3)修改时间间隔:execute dbms_job.interval(job,interval);
    其中job为作业号,what和interval为varchat2类型的,next_date为DATE类型的。
    以上操作要提交后才生效(commit;)另外还有一个函数是:dbms_job.change,据说是在if what,next_date,or interval is null,
    leave that value as-is.的时候才用。
    嗯,当我想用它来修改下次执行时间的时候不成功,估计是要在那些参数都为空的时候才能用
    例子为:execute dbms_job.change(11,null,null,'sysdate+1');
      

  10.   

    如果系统是unix或linux的话,可以用crontab命令建立一个用户配置文件:
    配置内容:0 0 26 * *  /opt/j2sdk1.4.2_06/bin/java -jar -Xmx512m /app/dr/TimeStatistic.jar 2如果是windows系统的话,可以使用其自带的任务计划。这两个都是参数可配置的。