[pgsql-jp: 34084] Re: カラムの変更方法

Hideyuki Nihei nihei @ jcross.com
2004年 10月 8日 (金) 10:05:40 JST


二瓶と申します。

以下の方法はどうでしょうか?
1.該当テーブルをpg_dump
2.該当テーブルをdelete
3.カラム定義をやり直したテーブルをcreate
4.1でpg_dumpしたものをpg_restoreする

この方法ではだめですか?

現在私が運用しているシステムでは別サーバーへDBをコピーするときに
pg_dumpしたものpg_restoreして行なっていますが
そのテーブル内にserialを使っていろいろとやっていますが問題なく
動いています。

どうでしょうか?(的をはずしていたらごめんなさい)


>PostgreSQLのバージョンは7.2.3です。
>
>あるテーブルのあるカラムが varchar(50) で指定されていたのですが、
>50ではどうしても足りなくなり値を増やしたいだけなのですが、
>どうも簡単には出来ないようで困っております。
>
>カラム定義を変更できないのであれば、ダミー項目を作り、
>データをコピーして削除・リネームしたら良いと思いついたのですが、
>肝心のカラム削除が出来ず困り果ててしまいました。
>
>このバージョンのドキュメントを調べたところ
>http://www.postgresql.jp/document/pg721doc/reference/sql-altertable.html)
>
>> テーブルから列を削除します。現在では、既存の列を削除するためには以下のように、
>> テーブルを再作成してから再ロードしなくてはなりません。 
>
>とあったように、再構築しか手段は無いのでしょうか?
>(つまりカラムの削除は出来ないのでしょうか?)
>
>しかしこの場合困ったことがひとつ生じました。
>このテーブルのキーは構造上 serial not null の指定で自動的に付番しており、
>結果的に再構築したところでシリアルの last_value が初期化されてしまい、
>このことによって堂々巡りにハマり込んでしまいました。
>(既にシステムが稼動している都合上、多数のデータが格納されております)
>
>もっと簡単な方法があるのかもしれませんが、
>自分なりに調べてもどうしても解決できず途方にくれておりますので、
>どうかご教授頂ければ幸いです。


---
*-----------------------------------------*
(株)ブレインテック インターネット事業部
         二瓶 英行
 TEL: 03-3449-7261
 FAX: 03-3449-7381
 E-Mail: nihei @ jcross.com
 URL: http://www.jcross.com/
*-----------------------------------------* 




pgsql-jp メーリングリストの案内