• ベストアンサー

postgresql primary_key

失礼します。 今回重複データの削除等をしたテーブル 例: ------------------------- id | name | 1 | hoge | 8 | piyo | 12 | temp | ------------------------- このようなserial型でprimary_keyに設定したidの値を1,2,3と振り直したいです。 探してみるともしかしたらそのような事が不可能なのかもと思って投稿しました。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

sqlだけでできますね。postgresの課題ではなくSQLの課題でしたね。 UPDATE table as a SET id = (select count(id) from hoge as b where b.id <= a.id); ここからはpostgresだけですが、シーケンステーブルの現在値が昔のままなら、を手動でセットしてあげて下し。もしかしたら最近のバージョンでは自動でセットされてるかもしれません。

losloson
質問者

お礼

凄いです。テンポラリーテーブルでの作成を試していたのですが、 掲載して頂いたSQLでうまくいきました。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.2

一旦テンポラリーテーブルに待避させ、テーブルの中身を全削除。 シーケンスをリセット(0にする) INSERT SELECT でID以外を入れ直す

すると、全ての回答が全文表示されます。
回答No.1

serialって最終的にはdefault値が自動増加するだけdの【int型】ですから。 スクリプトで一度全部データ引いてきて、番号打ち直してアップデートかける方法しか思いつきませぬ。 もしかしたらsqlだけでできそうな気もしますが

すると、全ての回答が全文表示されます。

関連するQ&A