我有一个表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 开始。
你如何正确重置序列,之后,当我第一次插入时,我会得到改变序列的下一个值?