これを使用して、自動インクリメントされた id 列を作成します。
id BIGSERIAL -- psql
id BIGINT GENERATED BY DEFAULT AS IDENTITY -- hsql
単体テストでは、テスト間でこれらのシーケンスをリセットしたいと思います。
これは可能ですか? PostgreSQL と HSQLDB をターゲットにしています
これを使用して、自動インクリメントされた 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);