如何自动重置结束年度的最后一天的序列号?

时间:2016-01-04 08:31:53

标签: oracle

是否有可能每年自动重置序列号?例如,12月31日序列为3465,1月1日应为0001。

现在我手动通过以下查询重置它

select p_seq_name.nextval from dual;
alter sequence p_seq_name increment by -3465 minvalue 0;
select p_seq_name.nextval from dual;
alter sequence p_seq_name increment by 1 minvalue 0;

由于

2 个答案:

答案 0 :(得分:4)

首先,您必须创建一个包含SQL的过程。然后你必须创建一个执行程序的计划作业,这个作业将在一年内运行一次。

let url = NSURL(string: "https://www.udemy.com/the-complete-ios-9-developer-course/")!

   let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
    if let url_content = data{
        let webcontent = NSString(data: url_content, encoding: NSUTF8StringEncoding)
        print(webcontent)
    }
    }
    task.resume()

答案 1 :(得分:0)

您可以像这样创建一个SCHEDULER JOB:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB
    (
       job_name        => 'RESET_SEQUENCE'
      ,repeat_interval => 'FREQ=YEARLY;INTERVAL=1;BYMONTH=1;BYMONTHDAY=1;BYHOUR=0;BYMINUTE=0'
      ,job_class       => 'DEFAULT_JOB_CLASS'
      ,job_type        => 'PLSQL_BLOCK'
      ,job_action      => 'BEGIN EXECUTE IMMEDIATE ''ALTER SEQUENCE p_seq_name INCREMENT BY -3465 MINVALUE 0''; END;'
        ,enabled         => TRUE;
    );
END;
/

这项工作将于每年1月1日午夜后开始。 为了在12月31日运行它,请使用repeat_interval,如

FREQ=YEARLY;INTERVAL=1;BYMONTH=12;BYMONTHDAY=31;BYHOUR=23;BYMINUTE=59