【问题标题】:Reset a Sequence according to the year not by min or max value根据年份而不是最小值或最大值重置序列
【发布时间】:2018-12-07 04:31:07
【问题描述】:

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

设 Date 是 30/12/2017,seq 是 000012849 因此,当日期为 01/01/2018 时,我希望 seq 为 000000001。

【问题讨论】:

  • 你在这里也有类似的问题 - stackoverflow.com/questions/51470/…
  • “按年重置”是什么意思?您希望序列在 1 月 1 日重置吗?
  • @KaushikNayak 是的,再次检查描述。我编辑了它。你会明白
  • @SudiptaMondal 是的。谢谢

标签: sql oracle plsql triggers sequence


【解决方案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;
/

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多