こんにちは、大学時代にプログラミングを始め、現在はエンジニアをしているuhablog(ウハブログ)です。
今回の記事では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は結構いろんなプログラミング学習に役立つ書籍が対象になっているのでおすすめです。