を使用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')。