簡體   English   中英

更改自動生成的序列

[英]Alter auto-generated sequence

我用它來創建自動遞增的id列:

  id  BIGSERIAL                                -- psql
  id  BIGINT GENERATED BY DEFAULT AS IDENTITY  -- hsql

現在在單元測試中,我想重置測試之間的序列。

這可能嗎? 我針對PostgreSQL和HSQLDB

對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM