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

YAMANEKO/Mao yneko2 @ yamamaya.com
2008年 2月 14日 (木) 11:26:40 JST


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

もしかするとものすごく初歩的なこととか、
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/




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