每天将自动增量列重置为0

wha*_*hat 5 database postgresql auto-increment

在postgresql中有没有办法让自动递增列在每天的指定时间重置为零?

Fra*_*mer 6

使用cronjob可能非常简单

0 0 * * * echo "SELECT setval('public.my_table_id_seq', 1, false)" | psql -U my_db_user -d my_db_name
Run Code Online (Sandbox Code Playgroud)

或者,您可以设置"串行"列DEFAULT来调用存储过程,该存储过程将检查一天翻转,如果适当,重置序列,然后返回nextval()的结果.

但除此之外,不,我不会指望有一个神奇的ALTER SEQUENCE my_seq RESET AT INERVAL'1 day'或类似的东西.

编辑:纳入duckyfuzz的评论.

  • 当我尝试这个时,我得到了一个"setval:值0超出了序列的范围"search_id_seq""错误.解决方案是使用seval()的三个参数版本:setval('public.my_table_id_seq',1,false).在这里阅读更多内容:http://www.postgresql.org/docs/current/static/functions-sequence.html (3认同)

小智 6

基本上你可以用这个重置序列:

ALTER SEQUENCE your_sequence_name RESTART WITH 1;
Run Code Online (Sandbox Code Playgroud)

请享用...