phpPgAdmin でレコードの編集・削除できない場合の対応方法


[初回公開] 2010年03月08日

"phpPgAdmin"はブラウザ上でデータベース(postgreSQL)のデータ参照だけでなくテーブルの作成や構成変更ができるのでシステム開発者に精通していないデザイナーやウェブサイト製作者にとっても大変便利で簡単なツールだが、一部のテーブルにおいて登録しているレコード(データ)の編集・削除ができないことがあるのでその対応方法を紹介する。

phpPgAdmin でレコードの編集・削除できない場合の対応方法




1.phpPgAdmin で編集・削除ができない場合の影響は


phpPgAdmin はデータベース(postgreSQL)の操作を簡単に行うツールであり、データベースに入っているデータを表示したり登録・変更するプログラムを独自に用意する必要が無い。
もし編集・削除ができなくてもデータベースに入っているデータを参照するだけであれば支障は無いが、データベースを使った Web アプリーションを開発する場合はデータが正常に挿入されたか、その値を変更したり削除すると開発している画面にどのような影響が出るかは常にデータベースのデータを操作する必要があるので編集・削除できないと開発の効率が非常に悪くなる。
phpPgAdmin でデータの参照はできるが編集・削除ができない場合は下図のようになる。

編集・削除ボタンが出ない状態


2.原因(1) データベース接続ユーザに操作権限が無い


postgreSQL を始め、MySQL や Oracle などデータベースには利用できるユーザと操作権限が存在している。
重要なデータを取り扱うデータベースで不用意に上書きされたり削除されたりしないように、重要な情報は参照のみとするなど操作を制限することができる。
phpPgAdmin から postgreSQL に接続するデータベースユーザの操作権限が無い場合も編集・削除のボタンが表示されないことがあるため、データベースの接続に利用しているユーザの権限を確認する必要がある。
テーブルが複数あるのであれば一通りのテーブルを選択してレコード一覧を表示し、一つでも編集・削除ボタンが表示されていれば後述するテーブルの設定が原因のためユーザの権限は問題無い。



3.原因(2) テーブルにユニークキーの設定が無い


postgreSQL を始めデータベースのテーブルにはユニークキーもしくはプライマリーキーと呼ばれる各テーブルで唯一のデータしか入らない(言い換えると同じデータが入らない)設定を入れることができる。
例えば「担当者名,性別」といったデータ構造の場合、ユニークキーが無いと「A,男性」が複数登録することができてしまうが、同姓同名を許可しないようにするためには「担当者名」にユニークキーの設定を入れるとAは複数登録できなくなる。
このようにユニークキーが無いテーブルだと phpPgAdmin がデータを編集・削除しようとするとどのデータを編集すればよいか判断がつかない、もしくは複数データ全てを一括して編集・削除してしまう恐れがあるため編集・削除ボタンが表示されないようになっている。
もし編集・削除したいのであれば、テーブルにユニークキーを設定する必要がある。

尚、phpPgAdmin でユニークキーを設定する場合は次の通りとなる。

1) メニュー内の"構造"をクリックする。

検査制約をクリックする


2) インデックス内の「PRIMARY」を選択する。
3) 「保存する」をクリックする。
4) 編集・削除が表示されることを確認する。

編集・削除が表示されることを確認