自宅のDBサーバに新しくテーブルを追加した。
PostgreSQLなので、pdAdminIIIで操作をした。簡単なテーブルで有効なのは2カラムで、主キー用にシリアルのカラムを追加、将来性を考えてtext属性のカラムを作り個々にはデフォルトで適当な値を入れることにした。
しかし、エラーになってデフォルト値が設定できない。いつも、pgAdminIIIはMacで使っているので、Mac版の不具合を考えたのだが、Windows版を使ってもエラーの出るタイミングが若干異なるだけでエラーの内容は全く同じ。
しかし、Windows版でのエラーメッセージで読めた。デフォルトの値が不正なのではなく、「未定義のカラムだ」とエラーをはいた。
要するに、pgAdminIIIの画面にある「初期の値」というのは、値を入力するのではなく、カラムを指定する欄だったようなのだ。
試しに、「’ほげほげ’」と入力したところ希望通りの動作をした。SQL展開したときに、
カラム名 DEFAULT ‘ほげほげ’::TEXT
と展開されるので、これを見れば納得なのだが、最初は全くわからなかった。グーグル先生に適当に質問しても、マニュアル類は全くヒットせずに、SQLの記述でカラムにデフォルト値を指定することについて記述したページが先頭でヒットした。
普通は使わない機能なのかもしれない。マニュアルを開いたら、CREATE文について延々と書かれた英文がブラウザに表示されたので読む気がうせた。CREATE文はオプションが多いから非常に長いのだ。
今回覚えたので今後は大丈夫だ。今の自分には必要ないが、数値項目だとどうなるのか、興味は尽きない。
コメント