调度缺少属性的DB脚本更新条目的最有效方法是什么?插入到数据库中的SQL有时会丢失一个属性,我想安排一些类似SQL脚本的东西,检查指定的条目,并根据现有的数据库表每天更新一次。我使用的是Oracle DB 19c版本。
w8biq8rn1#
好吧,对我来说,看起来“最有效”的方法也是“唯一”的方法-一个存储过程(它更新那些 * 条目 *)正在调度(由dbms_scheduler)。我们假设这个过程名为p_update_entries。我就不用猜密码了。然后你会安排它,例如。作为
dbms_scheduler
p_update_entries
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'p_update_entries', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN p_update_entries; end;', start_date => TO_TIMESTAMP_TZ ('25.08.2023 09:00 Europe/Zagreb', 'dd.mm.yyyy hh24:mi TZR'), repeat_interval => 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=2; BYMINUTE=0', enabled => TRUE, comments => 'Fixing missing entries'); END; /
这意味着该程序将从周一到周五每天运行(即不会在周末跑步)在凌晨02:00。如果你认为你不能根据你的需要调整它,请参阅文档以获取更多信息。还有其他选择吗?从理论上讲,是的-你可以手动运行程序。数据库触发器可能不会有帮助,因为你想做它 * 一天一次 *,而触发器触发 * 现在 *,每次在底层表中发生变化。我想不出其他的选择但其他人可能会
1条答案
按热度按时间w8biq8rn1#
好吧,对我来说,看起来“最有效”的方法也是“唯一”的方法-一个存储过程(它更新那些 * 条目 *)正在调度(由
dbms_scheduler
)。我们假设这个过程名为
p_update_entries
。我就不用猜密码了。然后你会安排它,例如。作为
这意味着该程序将从周一到周五每天运行(即不会在周末跑步)在凌晨02:00。如果你认为你不能根据你的需要调整它,请参阅文档以获取更多信息。
还有其他选择吗?从理论上讲,是的-你可以手动运行程序。
数据库触发器可能不会有帮助,因为你想做它 * 一天一次 *,而触发器触发 * 现在 *,每次在底层表中发生变化。
我想不出其他的选择但其他人可能会