Sql 如何在年初将Oracle中的序列值重置为1?

Sql 如何在年初将Oracle中的序列值重置为1?,sql,oracle,sequence,reset,Sql,Oracle,Sequence,Reset,我有一张报告表 每次验证报告时,我都使用触发器使用以下顺序更新表报告序列号: CREATE SEQUENCE "SSM_ANDROID"."REPORTS_SERIAL_NUMBER_SEQ" MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; 每年一次,在得到验证的第一份报告中,我必须将序列重置为1 我可以在每年1月1日运行的服务器上使用cronj

我有一张报告表

每次验证报告时,我都使用触发器使用以下顺序更新表报告序列号:

CREATE SEQUENCE  "SSM_ANDROID"."REPORTS_SERIAL_NUMBER_SEQ"  MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE  NOORDER  NOCYCLE ;
每年一次,在得到验证的第一份报告中,我必须将序列重置为1

我可以在每年1月1日运行的服务器上使用cronjob。但是,服务器停机是什么原因呢?我知道,我有点悲观

另一种方法是每次检查上次报告的日期,如果与SYSDATE不在同一年,则重置序列。但是,就性能而言,它并不那么合适

可以从数据库自动完成吗


提前感谢您的时间。

您可以使用Oracle Scheduler计划数据库作业


相反,您可以使用自定义方法/SP生成序列,并在其中进行检查。是的,我正在考虑这个问题。但我不想每次都检查上次添加和验证的报告是否与系统的年份相同。我的意见是,这是缺乏表现。我不是Oracle数据库方面的专家。我认为您使用的是序列,而不是为它们设计的。你希望你的序列号是无间隙的吗?我需要递增的整数作为序列号,为期一年。之后,在验证的第一份报告中,序列号必须重置为1。我不使用它作为主键。当一份报告被验证并创建pdf时,我必须在每个pdf上增加序列号。当验证报告以更新下一个序列号时,我正在使用触发器。我希望我说清楚;)这很好,看起来像unix中的cron作业。我会进一步研究。谢谢因为我没有必要的特权来运行我将使用的调度程序。我只是需要一个方法来发送电子邮件时,工作成功。