• 締切済み

主キーを別のフィールドに変更したい

Access2000のVBAで、既存のテーブル「M」の主キー「ID_1」を「ID_2」に変更したいのですが、可能でしょうか? アップデータのようなロジックを組まなくてはならないので、手順としては、、、 1)まだ「ID_1」が主キーであるかどうか判断する 2)1がTrueなら、「ID_2」が主キーに変更する 3)1がFalseなら、(「ID_2」が既に主キーであると見なし)特に何もせず終了 おそらく、indexオブジェクトあたりを使えばできると思うのですが、どうもこのあたりが複雑でわかりません。 どなたかご存知の方、ご教授いただけると幸いです。

みんなの回答

noname#182251
noname#182251
回答No.2

#1の意見に賛成ですが、何か理由があるのでしょうか? testテーブルの ID_1 フィールドをプライマリーキーにするSQL文は下記の通りです(mykey は適当に変更可) alter table test add constraint mykey primary key(ID_1) これで指定されたものは alter table test drop constraint mykey で削除できます。問題はAccess2000で直接プライマリーキーを指定していると mykey に相当する「名前」が判らないことです。その問題がなければ alter table test add constraint mykey primary key(ID_2) と、さらにエラー処理を組み合わせれば、ご要望のことはできそうです。VBAは知らないので具体的コードは判りません。

noname#60992
noname#60992
回答No.1

主キーというのは、テーブルのプロパティですので、 ID2に重複がないことを確認して、変更するだけで よいのではないでしょうか? テーブルのプロパティをかえるのが怖いなら、別なテーブルを 作って、データを入れてみてはいかがでしょうか? それとも何かVBAから行いたい理由があるのでしょうか? VBAからはADOXでインデックスの指定等ができたと 思いますが、ADOX自体あまり融通が利かないので私は あまり使いません。

関連するQ&A