PostgreSQLのalterexpression内でサブクエリを使用することは可能ですか?
主キー列の値に基づいてシーケンス値を変更したい。
次の式を使ってみましたが、実行されませんでした。
alter sequence public.sequenceX restart with (select max(table_id)+1 from table)
PostgreSQLのalterexpression内でサブクエリを使用することは可能ですか?
主キー列の値に基づいてシーケンス値を変更したい。
次の式を使ってみましたが、実行されませんでした。
alter sequence public.sequenceX restart with (select max(table_id)+1 from table)
私はあなたがそのようにそれをすることができるとは思わないが、あなたはアルターがすることであるsetval関数の方向を使うことができるはずである。
select setval('sequenceX', (select max(table_id)+1 from table), false)
falseを指定すると、指定されたとおりに次のシーケンス番号が返されます。
さらに、大文字と小文字が混在するオブジェクト名があり、次のようなエラーが発生した場合:
ERROR: relation "public.mytable_id_seq" does not exist
...regclassを使用する次のバージョンが役立つはずです。
select setval('"public"."MyTable_Id_seq"'::regclass, (select MAX("Id") FROM "public"."MyTable"))