在触发器函数中重置PostgreSQL序列
我有一个表在触发器函数中重置PostgreSQL序列,sql,postgresql,database-trigger,database-sequence,Sql,Postgresql,Database Trigger,Database Sequence,我有一个表counter\u registry,其中有一列priority\u number,其默认值来自nextval('counter\u registry\u priority\u number\u seq'::regclass)。My trigger函数(在插入之前运行)有一个代码段,在插入日期没有现有事务时重置序列: -- Restart the priority number sequence if current day is a new day IF (SELECT CASE W
counter\u registry
,其中有一列priority\u number
,其默认值来自nextval('counter\u registry\u priority\u number\u seq'::regclass)
。My trigger函数(在插入之前运行)有一个代码段,在插入日期没有现有事务时重置序列:
-- 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\u number
列从重置前序列的下一个部分获取其值,即使它已经被重置。后续插入遵循新的重置顺序,从1开始
如何正确地重置序列,在这之后,当我第一次插入时,我将获得更改序列的下一个值?旁注:您不需要
CASE
构造,存在(…)
已经产生一个布尔值。@wildplasser是的,对不起,我的错误。