2010-01-08 28 views
4

有沒有辦法讓postgresql在每天指定的時間將自動遞增列重置爲零?每天將自動增加列重置爲0

+4

爲什麼你要這麼做?你能否添加更多信息?告訴我們真正的問題是什麼,而不是陳述你的解決方案。 – 2010-01-08 03:12:56

+0

看到Postgres在8.4中獲得了排名函數,更好的想法是根據時間戳排名 – 2010-01-08 04:51:19

回答

6

這可能是相當瑣碎與一個cronjob

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

或者,你可以設置你的「串行」列默認設置爲調用存儲過程,它會檢查了一天展期,如果合適的重置序列,然後返回nextval()的結果。

但除此之外,不,我不會指望有一個神奇的ALTER SEQUENCE my_seq重置在INERVAL'1天'或類似的東西。

編輯:合併duckyfuzz的評論。

+3

當我嘗試這個時,我得到了一個「setval:值0超出了序列的邊界」searches_id_seq「」錯誤。解決方法是像這樣使用三個參數版本的seval():setval('public.my_table_id_seq',1,false)。在這裏閱讀更多信息:http://www.postgresql.org/docs/current/static/functions-sequence.html – 2011-05-10 12:18:29

6

Basicaly你可以重置序列這一個:

ALTER SEQUENCE your_sequence_name RESTART WITH 1; 

享受...

+0

我喜歡這種方式,它更容易記住。 – 2012-05-24 09:24:28