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
------------
沒有留言:
張貼留言