はじめに
pgAdmin 4を使用してPostgreSQLのテーブルにカラムを追加しようとした際に直面したトラブルに関する記事です。
テーブル作成した後、カラムに値を追加できなくなりました。
現象
bookというテーブルを作成しました。idをint,titleをchar,authorをchar,priceをint,4つのカラムを作成しました。
作成したテーブルを確認して見てみると、カラムに鍵マークがつきました。
さらに画像左上の「三+」がグレーになってしまい、列が追加できませんでした。
対処方法
私の場合は、サンプルのテーブルなので、一回削除し、もう一度作成し直しました。後からプライマリーキー設定する方法もあると思います。今回は省略します。
今回は、idを主キーに設定しました。Primary key?のところクリック 青くなります。
結果
プライマリキーを設定した後に「三+」がグレーだったのが、黒になり、列の追加、カラムの追加できるようになりました!
# 原因
公式には、下記のことが書いてあります。私の場合、「リレーショナルデータベース理論では、全てのテーブルにプライマリキーが1つ必要とされています。」これを無視して作成していたのが、原因だと思われます。
「プライマリキーの設定が推奨される理由」は、また調べて記事にしたいと思います!
コメント頂いたので、修正しました。
1つのテーブルは最大1つのプライマリキーを持つことができます。
(一意性制約および非NULL制約には個数の制限はありません。
機能的には同じものですが、プライマリキーとして識別される制約は1つのみです。)
リレーショナルデータベース理論では、全てのテーブルにプライマリキーが1つ必要とされています。
この規則はPostgreSQLでは強制されませんが、たいていの場合はこれに従うことが推奨されます。
原因
公式には、下記のことが書いてあります。私の場合、主キーに対する理解不足が原因だと思われます。
主キーは文書化、および、クライアントアプリケーションの両方の面で役に立ちます。 例えば、行値の変更が可能なGUIアプリケーションが行を一意的に特定するためには、 おそらくテーブルの主キーを知る必要があります。 他にも主キーが宣言されているときにデータベースシステムがそれを利用する場面がいくつかあります。 例えば、外部キーがそのテーブルを参照するとき、主キーがデフォルトの対象列となります。