からのデフォルト値を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 を取得しますか?