網頁

2021/12/9

PostgreSQL 重設自動遞增序列 reset sequence count

PostgreSQL重設自動遞增序號的方式如下。


重設sequence的語法為:

ALTER SEQUENCE employee_id_seq RESTART WITH 1;

例如建立資料表employee的主鍵id欄位設定了自動增量SERIAL且新增兩筆資料如下。

CREATE TABLE employee (
   id SERIAL PRIMARY KEY,
   name VARCHAR(60) UNIQUE NOT NULL
);

INSERT INTO "employee" ("name") VALUES ('john');
INSERT INTO "employee" ("name") VALUES ('mary');

然後查詢employee資料id最後一筆的值為2。

 id | name
----+-------
  1 | john
  2 | mary

使用SERIAL建立的sequence預設名稱格式為tablename_colname_seq,所以employee.id的sequence名稱為employee_id_seq

輸入SELECT last_value FROM pg_sequences WHERE sequencename = 'employee_id_seq'查詢employee_id_seq最後的遞增值為2。

postgres=# SELECT last_value FROM pg_sequences WHERE sequencename = 'employee_id_seq';
 last_value
------------
          2

執行ALTER SEQUENCE employee_id_seq RESTART WITH 1重設employee_id_seq的遞增值。

postgres=# ALTER SEQUENCE employee_id_seq RESTART WITH 1;
ALTER SEQUENCE

再次查詢employee_id_seqlast_value變為空(null),下一次nextval()會重新由1開始起跳。

# SELECT last_value FROM pg_sequences WHERE sequencename = 'employee_id_seq';
 last_value
------------



沒有留言:

張貼留言