CSE PostgreSQLのテーブルにプライマリキーを作成する方法

このQ&Aのポイント
  • CSE PostgreSQLでのテーブルにプライマリキーを作成する方法について知りたい。
  • CSE PostgreSQLでプライマリキーが存在しないため、更新処理ができないエラーメッセージが表示される。
  • CSE PostgreSQLや他の方法を使って既存のテーブルにプライマリキーを定義する方法や、一部のデータを削除する方法を教えてほしい。
回答を見る
  • ベストアンサー

CSE PostgreSQLのテーブルにプライマリキーを作成する方法

現在、CSEを使いPostgreSQLのテーブルから 一つの行を消そうとしたところ、 『更新対象のテーブルにプライマリキーが存在しない為、更新処理を行う事ができません。 更新処理を行うには、更新対象のテーブルにプライマリキーが定義されいる必要があります。』 と言うようなエラーメッセージが出てきて困っています。 どこを調べてもCSEでのプライマリキーの作成方法は載っていないのですが、そもそも『CSEでのプライマリキーの作成』は不可能なのでしょうか? もし、CSEで、もしくは他の方法で既存のテーブルにプライマリキーの定義の仕方を知っている方いましたらご教授下さい。 それか、PostgreSQLのデータの一部を(テーブルの内容全てではなく一行だけ)削除する方法ありましたらそちらもご教授下さい。 よろしくお願いします。

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

  • ベストアンサー
  • aton
  • ベストアンサー率47% (160/334)
回答No.1

試してはいないのですが,参考URLの ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no); を応用して, ALTER TABLE products ADD CONSTRAINT some_name PRIMARY KEY (product_no); 等としてみてはどうでしょうか?

参考URL:
http://www.postgresql.jp/document/pg746doc/html/ddl-alter.html#AEN2125

関連するQ&A

  • PostgreSQLテーブルを作成するスキーマ

    PostgreSQLテーブルを作成するスキーマ PostgreSQLにテーブルを作成するのですが、 すでにある資産は publicスキーマに全部作成しているようです。 これってどうなのでしょうか? 簡易的に作る時は何も考えずに、既存のpublicスキーマに作ってしまうのは一般的な事なのでしょうか? それとも、ちゃんと自分でスキーマ作ってから、そこに作るべきなのでしょうか?

  • テーブル定義書を自動生成するツールはありませんか?

    いつもお世話になっています。 現在システムを構築中で、テーブル自体は既に出来ています。 これを資料としてまとめるために、Excelでテーブル定義書を作成しよう かと考えております。 ここで質問なのですが、既に構築済みのテーブルから、 自動的にテーブル定義書を作成するツールは有りませんでしょうか? 下記のURLを参照したところ http://ml.postgresql.jp/pipermail/pgsql-jp/2002-May/009472.html CSEというソフトが有力なようですが、既に更新がされていないようで 現在のPostgreSQLのバージョンとは合わないようです。 E-R図はvisio等のツールでも作成できますが、テーブル定義書を自動的に 作成してくれるツールは以外に見当たらないようで、ちょっと困っています。 PostgreSQLのバージョンは 7.4.7 もしくは 8.1.3です。 よければご教示頂ければ幸いです。

  • PostgreSQL LOCK TABLE

    はじめまして、小澤と申します。 PostgreSQL はあまり使う機会が無かったので、 実務期間数か月の初心者です。 数年前に作成されたサイトのメンテナンスをしております。 本番環境の DB は、更新することが出来ないので、 ローカルに開発環境を作って、修正作業を行っています。 本番環境と開発環境の、PostgreSQL のバージョンの違いによって 困っています。 PHP で、「LOCK TABLE ~ 」という処理があるのですが、 本番環境は問題なく実行できますが、開発環境で、下記のエラーがでます。 SQL エラー: ERROR: LOCK TABLEはトランザクションブロック内でのみ使用できます LOCK TABLE をトランザクションの BEGIN と COMMIT の中に 入れなさい、ということおt思います。 本番環境は、Linux バージョンは 7.3.4 開発環境の、Windows バージョンは 8.4.4 7.3.4 の頃には、トランザクション処理が無かったのか、 LOCK TABLE との関係が定義されてなかったのかもしれません。 開発環境の PostgreSQL のバージョンを 7.3.4 にしようと思い、 探したのですが、Windows 版はもう無いようです。 下記のことを教えて下さい。 1.開発環境の PostgreSQL の設定で、このエラーを出ないようにする 方法はないでしょうか。 2.Windows 版の PostgreSQL のバージョンを 7.3.4 が、 どこかにないでしょうか。 尚、ソースにトランザクション処理を追加するという方法も考えましたが、 修正箇所が多いので、難しいです。 メーリングリストにも出してます。マルチキャストですみません。 以上、宜しくお願いします。

  • PostgreSQL(8.4.2)のユーザ定義関数(ストアドプロシージ

    PostgreSQL(8.4.2)のユーザ定義関数(ストアドプロシージャ)を、 ODBC経由でVisualStudio2005から利用したいのですが、 サーバーエクスプローラーからユーザ定義関数を参照することが出来なくて悩んでいます。 ユーザ定義関数はpgAdminIIIで作成しました。 cse(Common SQL Environment)などのフリーのツールからは問題なく参照できます。 VisualStudioにユーザ定義関数として認識させるための何かおまじない的な物が必要なのでしょうか。 それともPostgreSQLとVisualStudioとの相性が悪いのでしょうか。 なおユーザ定義関数以外であるテーブルやビューは、 サーバーエクスプローラーから参照できます。

  • postgresql の rule とは

    postgreSQL 7.2.1 を使用しています。 あるヒストリカルテーブルがUpdateされた際に 直近データのレコードだけをセレクトした テーブルを新規に作成したいと思っています。 この機能はpostgresql の ruleで実現可能でしょうか? (既存プログラムに手を入れたくないのです) rule機能がイマイチ理解出来ないので どなたかご助言ください。よろしくお願いいたします。

  • Postgresqlでのテーブル作成について

    どなたかご教授願えますでしょうか。 <マスタ> <トランザクション> Kaisya Kojin-NO Simei      kaisya saiban-NO Kojin-NO AAA   0001   名前A1      AAA   1     0002 AAA   0002   名前A2      AAA 2     0001 BBB   0001   名前B1  ⇒   BBB 1 0001 BBB   0002   名前B2      BBB 2 0002 CCC   0001   名前C1      CCC 1 0002 CCC   0002   名前C2      CCC 2 0001 マスタのkaisyaとKojin-N0をキーにするべく各項目指定の後に constraint KEY_NAME primary key ( Kojin-NO, kaisya      ) として複合のキー設定をしてテーブルを作成しました。このマスタテーブルは作成できたのですが、 トランザクションを作成しようとCreate Tableを使用しましたが ERROR:relation "Key_name" already Exists となり作成できません。 ちなみにトランザクションのsaiban-NO、KaisyaがPrimary Key Kaisyaとkojin-NOをマスタの外部キーとして設定しようとしていました。 そもそもこの考え方が間違っているのでしょうか。

    • 締切済み
    • PHP
  • PHPとpostgreSQL プルダウンの作成

    いつも大変お世話になっております。 現在、PHPとpostgreSQLを使用し、webシステムの勉強をしていますが、フォームにプルダウンを設置した際の、PHPのデータの受け渡し、また、DBのテーブルへの登録方法がわかりません。プルダウンには選択肢を3つ付ける予定でおります。 postgreSQL側のレコードの作成方法と、PHPを利用しての登録の仕方で困っています。 ご教授のほど、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Oracleでテーブルを作成する際に、インデクスの作成先を指定したい。

    以下のようにテーブルを作成しようとしてます。 CREATE TABLE TEST_USER.M_USER ( ID char(4), NAME varchar2(40) NOT NULL), CONSTRAINT PK_USER PRIMARY KEY(ID) ); さて、プライマリキーを定義しているので、インデクスが作成されるはずです。 この作成先のテーブルスペースを指定したいのですが、方法が解りません。 CREATE TABLEの紹介をしているサイトにものっていなくて、途方にくれています・・・。 CONSTRAINT句を使えばいいのでしょうか?

  • PostgreSQLのリンクテーブル?について

    はじめまして、yossy136kgと申します。 下記の件、ご教授をお願いします。 ・TEST1というDBがあったとして、psqlより\dでテーブル一覧を参照すると、「No relations found.」と表示されます。 ・MS AccessからODBC経由でTEST1のDBのリンクテーブルを作成する際、別のDB(TEST2)のテーブルが参照できます。 例)TEST2.HOGE1、TEST2.HOGE2・・・ 【質問】 TEST1のDBからTEST2のDBのテーブルをリンクさせるようなことは可能なのでしょうか? ちなみにPostgreSQL8.2.3、CentOSです。

  • ファイルメーカーのテーブルの更新履歴を作成したい。

    ファイルメーカーのテーブルの更新履歴を作成したいと考えています。 対象のテーブルは既存のもので、元々手動での保存は行っていません。使い勝手を変えずに履歴作成の機能を追加したいのですが、ファイルメーカーが自動保存するタイミングで履歴を作成するにはどのようにすればいいのか教えてください。