web-dev-qa-db-ja.com

PGの既存の列を変更して、主キーを自動インクリメントする

Postgresqlにデータベースがあり、SQL Serverから移行されました(データのみ)。
SQL Serverでは、このデータベースのテーブルには次の列があります。

measure_id
datum
measure

どこ measure_idは自動インクリメンタル主キー、datumは日時、measureは浮動小数点です。
Postrgresqlでの移行後、measure_idは、bigint型の列です。

この列を変更するにはどうすればよいですか(measure_id)bigserialに割り当て、主キーとして割り当てます。これで、テーブルにデータがいっぱいになったのですか?

11
zetah

シーケンスを作成し、それを列のデフォルト値として使用します。

create sequence measures_measure_id_seq
   owned by measures.measure_id;

alter table measures
   alter column measure_id set default nextval('measures_measure_id_seq');

commit;

それは本質的にserialがすることです。

詳細はマニュアルをご覧ください:
http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL

15