2

我有一个表counter_registry,其中有一列priority_number的默认值来自nextval('counter_registry_priority_number_seq'::regclass). 我的触发函数(在插入之前运行)有一个片段,当插入日期没有现有事务时重置序列:

-- Restart the priority number sequence if current day is a new day
IF (SELECT CASE WHEN NOT EXISTS ( SELECT * FROM counter_registry WHERE transaction_date = now()::date ) THEN true ELSE false END) = true
    THEN PERFORM setval('counter_registry_priority_number_seq', 1);
END IF;

当我在新的一天从客户端应用程序向表中插入一条新记录时,该priority_number列从重置前的序列的 nextval 获取其值,即使它已经被重置。随后的插入遵循新的重置序列,从 1 开始。

你如何正确重置序列,之后,当我第一次插入时,我会得到改变序列的下一个值?

4

0 回答 0