根据年份重置序列,而不是最小值或最大值 [英] Reset a Sequence according to the year not by min or max value

查看:93
本文介绍了根据年份重置序列,而不是最小值或最大值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

创建一个序列,该序列将根据年份进行重置. 考虑9位数的序列,以000000001开头,最大为999999999.

Create a sequence which will reset according to the year. Consider the sequence with 9 digit starts with 000000001 and max is 999999999.

让日期为30/12/2017,后继为000012849 因此,当日期为01/01/2018时,我希望序列为000000001.

Let Date is 30/12/2017 and seq is 000012849 So when the date is 01/01/2018, I want the seq to be 000000001.

推荐答案

创建一个定期执行的定期作业,该作业

Create a recurring scheduled job that resets the sequence at midnight of 1st January each year.

类似(假设您有一个YOUR_SCHEMA.RESET_ANNUAL_SEQUENCE过程来执行重置):

Something like (assuming you have a YOUR_SCHEMA.RESET_ANNUAL_SEQUENCE procedure to perform the reset):

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name             => 'reset_annual_sequence_job',
    job_type             => 'PLSQL_BLOCK',
    job_action           => 'BEGIN your_schema.reset_annual_sequence; END;',
    start_date           => ADD_MONTHS( TRUNC( SYSTIMESTAMP, 'YY' ), 12 ),
    repeat_interval      => 'FREQ=YEARLY; BYDATE=0101;', 
    enabled              =>  TRUE,
    comments             => 'Annual sequence reset'
  );
END;
/

这篇关于根据年份重置序列,而不是最小值或最大值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆