2

からのデフォルト値をcounter_registry持つ列を持つテーブルがあります。私のトリガー関数 (挿入前に実行される) には、挿入日に既存のトランザクションがない場合にシーケンスをリセットするスニペットがあります。priority_numbernextval('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 を取得しますか?

4

0 に答える 0