根据年份重置序列,而不是最小值或最大值

时间:2018-06-28 07:23:42

标签: sql oracle plsql triggers sequence

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

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

1 个答案:

答案 0 :(得分:1)

在每年1月1日午夜创建resets the sequence的定期计划工作。

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

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;
/