我使用它來創建自動增加內徑柱:阿爾特自動生成序列
id BIGSERIAL -- psql
id BIGINT GENERATED BY DEFAULT AS IDENTITY -- hsql
現在,在單元測試中,我想測試之間的那些序列復位。
這可能嗎?我的目標PostgreSQL和HSQLDB
我使用它來創建自動增加內徑柱:阿爾特自動生成序列
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
);
「真實」是可選的(默認行爲);它告訴所提供的值已被使用的順序,並在提供下一個值之前遞增。見the Postgres documentation
在一個空表,你想下一個值是1,而0是超出了範圍,所以你會通過FALSE:
Select setval(pg_get_serial_sequence('table_name', 'column_name'), 1, FALSE);
看來HSQL也支持這一點,你能添加鏈接到文檔?答案將完成,然後 – 2013-04-09 10:01:19
你走了。 :) – deceze 2013-04-09 10:03:31
更多的事情:如果'table'通過外鍵被第二個表引用? – 2013-04-09 10:25:35