[英]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.