PostgreSQLにカラムを追加して、外部キー制約をつける

今回の記事ではPostgreSQLのテーブルにカラムを追加し、追加したカラムに外部キー制約をつけていきます。その後、追加したカラムにデータを追加し、NOT NULL制約も追加します。

前提事項の確認

今回対象となるデータベース名は「tododb」になります。まずは以下のコマンドでPostgreSQLのtododbにログインします。

$ psql -U yourUserName tododb

ターミナル等の先頭が「tododb=>」となっていたらPostgreSQLに入っています。

「\dt」コマンドでテーブルの確認をします。

tododb=> \dt
         List of relations
 Schema | Name  | Type  |  Owner
--------+-------+-------+----------
 public | todo  | table | uha-blog
 public | users | table | uha-blog
(2 rows)

上記のtodoテーブルにuseridカラムを追加して、usersテーブルのidカラムを参照する外部キー制約をつけます。

カラムの追加

まずはtodoテーブルに以下のコマンドでカラムを追加します。

tododb=> alter table todo add column userId varchar(50);
ALTER TABLE

外部キー制約の付加

以下コマンドで先ほど作成したtodoテーブルのuseridに外部キー制約を付け加えます。

alter table todo add foreign key (userid) references users (id);
ALTER TABLE

追加したカラムをNOT NULLにする

useridにはNOT NULL制約をつけたいですが、すでにtodoテーブルにはデータが存在していて、それらのデータにはNULLが入っているのでNOT NULL制約をつけることができません。そこで一度Update文を実行して、データを入れてからNOT NULL制約をつけます。外部キー制約がついているのでusersテーブルのidに存在しない値を追加する事はできません。

update todo set userid='keisuke';

次にNOT NULL制約をつけます。

alter table todo alter column userid set not null;
ALTER TABLE

まとめ

カラムの追加→外部キー制約を追加→NOT NULL制約を追加

上記の変更をテーブルに対して行いました。

書籍紹介

おすすめ書籍。こちらの書籍は2021/9/20時点でKindle Unlimited対象書籍ですのでこれを機に登録してみるのもいいかもしれません。Kindle Unlimitedは結構いろんなプログラミング学習に役立つ書籍が対象になっているのでおすすめです。

コメント

タイトルとURLをコピーしました