2008年2月14日

[pgsql-jp: 39199]主キーのINDEXの削除の仕方

度々お世話になります、もりもとです

もしかするとものすごく初歩的なこととか、
FAQかもと、思うのですが・・・

PostgreSQL 8.2.4を使っていまして、
元々、このようなテーブル(T_EXAMPLE)があって、
key1がPRIMARY KEYとなっていました。


Column | Type | Modifiers
--------+-----------------------------+---------------
key1 | character varying(15) | not null
data | character varying(50) |

しばらく運用してデータが溜まった後、仕様変更でフィールドを追加し、
運用しながら、主キーをKEY1とKEY2の複合キーとすることにしました。

Column | Type | Modifiers
--------+-----------------------------+---------------
key1 | character varying(15) | not null
key2 | character varying(4) | not null
data | character varying(50) |

ここで、元々のCREATE TABLEで自動的に作られたKEY1のためのインデックス、
T_EXAMPLE_PKEYを削除して、
新しくKEY1とKEY2の複合キーのインデックスを設定したいのですが・・・
T_EXAMPLE_PKEYの削除の仕方がわかりません。。

単純に
  DROP INDEX T_EXAMPLE_PKEY;
では、T_EXAMPLEの制約で使われているからドロップできない、
とエラーになってしまいますし・・・

では、T_EXAMPLEの制約を外そうと思っても
  ALTER TABLE T_EXAMPLE ALTER COLUMN KEY1 DROP NOT NULL;
KEY1は主キーですよ、とエラーになってしまいます。。

運用しながらの改造のため、
テーブルの作り直し、データの入れ直しは避けたいのですが・・・
どうやるのが正しいのでしょうか?

- YAMANEKO / Mao
http://yamamaya.com/

投稿者 xml-rpc : 2008年2月14日 11:26
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69733
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。