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