🧚 お知らせ!Beekeeper Studioは高速でモダンなオープンソースのデータベースGUIです ダウンロード
2024年4月29日 著者: Matthew Rathbone

はじめに

PostgreSQLで既存のテーブルに主キーを追加する作業は、データの整合性を確保し、データベースのパフォーマンスを最適化するためにデータベース管理者や開発者が行うものです。このチュートリアルでは、PostgreSQLの既存のテーブルに主キーを追加する手順を、必要なSQLコマンドや注意点とあわせて解説します。

前提条件

  • PostgreSQLデータベースへのアクセス
  • テーブル構造を変更するための十分な権限
  • SQLとデータベースの基本的な知識

主キーとは

主キーとは、テーブル内の各行を一意に識別するために使用される列、または列の組み合わせです。主キーには一意の値が必要で、NULL値を含めることはできません。1つのテーブルに設定できる主キーは1つだけです。

ステップ1: 現在のテーブル構造を確認する

主キーを追加する前に、既存のテーブル構造を確認し、主キーがまだ設定されていないことを確かめたうえで、どの列をキーにできるかを決めます。

確認方法は2つあります。コマンドラインを使う方法と、Beekeeper Studioで視覚的に確認する方法です。

方法1 — psqlを使う

-- Replace 'your_table' with your table name
\d your_table

psql上でテーブルの列、インデックス、制約が直接表示されます。

方法2 — Beekeeper Studioを使う

Beekeeper Studioでテーブルを右クリックし、View Structureを選択すると、すべての列、インデックス、制約を視覚的に確認できます。

PostgreSQLのcustomerテーブルの構造を表示し、customer_idが主キーとして示されているBeekeeper Studioの画面

ステップ2: 適切な列を選ぶ

各行で一意であることが保証されている列を選びます。そのような列が存在しない場合は、新しい列を作成するか、複数の列を組み合わせて複合キーを作る必要があります。

ステップ3: 主キーを追加する

単一列の主キー

各行を一意に識別できる単一の列を決めたら、正しいデータベースに接続していることを前提に、次のSQL構文を使用できます。

-- Replace 'your_table' and 'column_name' with your actual table name and column name
ALTER TABLE your_table
ADD PRIMARY KEY (column_name);

たとえば、customer_id、first_name、last_nameという列を持つcustomerテーブルに主キーを追加する場合は、次のALTER TABLEコマンドを使用します。

ALTER TABLE customer ADD PRIMARY KEY (customer_id);

これにより、customer_id列に主キーが作成されます。

既存のテーブルに複合主キーを追加する

また、次のように複数の列で構成される複合主キーを作成することもできます。

ALTER TABLE customer ADD PRIMARY KEY (first_name, last_name);

これにより、first_name列とlast_name列の両方で構成される主キーが作成されます。

ステップ4: 新しい主キーを確認する

主キーを追加したら、テーブルに正しく適用されているかを確認することが重要です。

-- Check the constraints on the table to confirm the primary key exists
SELECT conname, contype
FROM pg_constraint
WHERE conrelid = 'your_table'::regclass;

GUIを使いたい場合は、Beekeeper Studioなら制約の追加後、Structureタブで主キー列の横に鍵アイコンが自動的に表示されます。

customerでの出力例

           conname            | contype
------------------------------+---------
 customer_pkey                | p
 customer_support_rep_id_fkey | f

contypeがpの場合、主キー制約であることを示します。

主キーを追加する際の注意点

  • データの一意性: 主キーにする列のデータが、すべての行で一意であることを確認してください。
  • パフォーマンス: 大規模なテーブルへの主キーの追加は、リソースを大量に消費し、時間がかかる場合があります。大規模なテーブルではメンテナンス時間帯での実施を検討してください。
  • データの整合性: 主キー制約を追加すると、重複したエントリを発生させるINSERTやUPDATE操作はエラーになります。

まとめ

PostgreSQLで既存のテーブルに主キーを追加すると、データの整合性を維持し、パフォーマンスを向上させることができます。

コマンドラインでSQLを書く場合でも、視覚的に作業する場合でも、Beekeeper Studioのようなツールを使えば、スキーマの確認や新しい制約の検証が簡単になり、ミスを防げます。

実行前にSQL構文を確認したいですか?無料のSQL構文チェッカーをお試しください。変更を適用する準備ができたら、Beekeeper Studioでデータベースを開けば結果をすぐに確認できます。

Beekeeper Studioをダウンロード →

Beekeeper Studioは無料のオープンソースのデータベースGUIです

これまで使った中で最高のSQLクエリ&エディタツールです。データベースの管理に必要なものがすべて揃っています。 - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studioは高速で直感的、そして使いやすいツールです。多数のデータベースに対応し、Windows、Mac、Linuxで快適に動作します。

BeekeeperのLinux版は100%フル機能。手抜きも機能の妥協も一切ありません。

Beekeeper Studio 利用者の声

★★★★★
「Beekeeper Studioで以前のSQLワークフローを完全に置き換えました。高速で直感的、データベース作業がまた楽しくなりました。」
— Alex K.、データベース開発者
★★★★★
「多くのデータベースGUIを試してきましたが、Beekeeperは機能とシンプルさのバランスが絶妙です。とにかくちゃんと動きます。」
— Sarah M.、フルスタックエンジニア