を使用setval('sequence',1)
すると、シーケンスの開始値が 1 に設定されます。ただし、レコードが挿入されると、最初の「シーケンス」番号は実際には 2 になります。
実際の最初のレコードのシーケンス番号を 1 にする方法を教えてください。
を使用setval('sequence',1)
すると、シーケンスの開始値が 1 に設定されます。ただし、レコードが挿入されると、最初の「シーケンス」番号は実際には 2 になります。
実際の最初のレコードのシーケンス番号を 1 にする方法を教えてください。
細かいマニュアルから:
setval
シーケンス オブジェクトのカウンター値をリセットします。2 つのパラメーターのフォームは、シーケンスのlast_value
フィールドを指定された値に設定し、そのフィールドを true に設定します。これは、次が値を返す前にシーケンスを進めることis_called
を意味します。nextval
[...]SELECT setval('foo', 42); Next nextval will return 43 SELECT setval('foo', 42, true); Same as above SELECT setval('foo', 42, false); Next nextval will return 42
したがって、呼び出しsetval('sequence', 1)
はシーケンスの現在の値を に設定し1
、次の値は になります2
。おそらく、次の 3 つの引数形式が必要ですsetval
。
setval('sequence', 1, false)
シーケンスのis_called
フラグが false になり、nextval('sequence')
になります1
。また、シーケンスにバインドされた列のデフォルト値は ですnextval('sequence')
。