[英]Alter auto-generated sequence
我用它來創建自動遞增的id列:
id BIGSERIAL -- psql
id BIGINT GENERATED BY DEFAULT AS IDENTITY -- hsql
現在在單元測試中,我想重置測試之間的序列。
這可能嗎? 我針對PostgreSQL和HSQLDB
TRUNCATE table RESTART IDENTITY;
http://www.postgresql.org/docs/9.2/static/sql-truncate.html
http://hsqldb.org/doc/guide/dataaccess-chapt.html#dac_truncate_statement
對於PostgreSQL,您可以使用pg_get_serial_sequence
函數來發現用於維護自動增量的基礎序列的名稱,然后使用setval
函數來對其進行操作,例如,在手動插入或之后使序列與表中的最大值匹配。刪除行:
Select setval(
pg_get_serial_sequence('table_name', 'column_name'),
(Select Max(column_name) From table_name),
TRUE
);
“ true”是可選的(默認行為); 它告訴序列提供的值已被使用,並在提供下一個值之前遞增。 請參閱Postgres文檔
在空表上,您希望下一個值為1,但0超出范圍,因此您將通過FALSE:
Select setval(pg_get_serial_sequence('table_name', 'column_name'), 1, FALSE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.