私は新しい Postgres 10 ID列 について読んでいて、SERIAL
列をCREATE TABLE
。
ID列を既存のテーブルに追加することもできますか?
たとえば、古いSERIAL
列を使用すると、次のことができます。
ALTER TABLE sourceTable ADD COLUMN ogc_fid SERIAL;
ID列で、上記と同等のものはありますか?私は試した:
ALTER TABLE sourceTable ADD COLUMN ogc_fid GENERATED BY DEFAULT AS IDENTITY;
しかし、エラーが発生しました:
エラー:「BY」またはその付近の構文エラー1:... R TABLE sourceTable ADD COLUMN ogc_fid GENERATED BY DEFAULT
スクリプトでSERIAL
列をIDENTITY
列に置き換えることを考えており、これが可能かどうかを確認したいと思っています。
列の型も宣言する必要があります(INT
またはBIGINT
またはSMALLINT
):
ALTER TABLE sourceTable
ADD COLUMN ogc_fid int -- int or bigint or smallint
GENERATED BY DEFAULT AS IDENTITY;
また、最新のポイントリリースを必ず使用してください。 IDENTITY
は最近追加されたばかりなので、Postgres 10.2より前にこの特定のコマンドに影響するバグがありました。参照: 行を含む既存のテーブルにPostgreSQL 10のID列を追加する方法