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_seq的last_value變為空(null),下一次nextval()會重新由1開始起跳。
# SELECT last_value FROM pg_sequences WHERE sequencename = 'employee_id_seq';
last_value
------------
沒有留言:
張貼留言