PostgreSQL ドロップ主キー

Shihab Sikder 2023年6月20日
PostgreSQL ドロップ主キー

この記事では、ALTER TABLE クエリを使用して PostgreSQL で主キー制約を削除する方法について説明します。

PostgreSQL で主キーを削除する

テーブルがあり、primary key フィールドを削除したいとします。 従業員の次の表を見てください。

\d table_name を使用すると、各列のフィールド名とタイプを確認できます。

postgres=# \d record
                       Table "public.record"
  Column  |         Type          | Collation | Nullable | Default
----------+-----------------------+-----------+----------+---------
 id       | integer               |           | not null |
 username | character varying(50) |           |          |
 email    | character varying(50) |           |          |
 gender   | character varying(50) |           |          |
 company  | character varying(50) |           |          |
Indexes:
    "record_pkey" PRIMARY KEY, btree (id)

コード スニペットは、id が主キーであり、制約が record_pkey であることを示しています。 primary key 列を削除しましょう。

既存の主キーを削除する構文。

ALTER TABLE table_name DROP CONSTRAINT primary_key_constraint;

ここに record という名前のテーブルがあります。 id をレコード テーブルから削除するには、クエリは次のようになります。

ALTER TABLE record
DROP CONSTRAINT record_pkey;
postgres=# ALTER TABLE record
postgres-# DROP CONSTRAINT record_pkey;
ALTER TABLE

では、テーブルの説明を見てみましょう。 線が見えないはずです。

"record_pkey" PRIMARY KEY, btree (id)

列全体ではなく主キー制約を削除しているため、ID 列はテーブルに残ります。 主キーとして扱われません。

\d records と入力すると、次の出力が得られるはずです。

postgres=# \d record;
                       Table "public.record"
  Column  |         Type          | Collation | Nullable | Default
----------+-----------------------+-----------+----------+---------
 id       | integer               |           | not null |
 username | character varying(50) |           |          |
 email    | character varying(50) |           |          |
 gender   | character varying(50) |           |          |
 company  | character varying(50) |           |          |


postgres=#

多くの ALTER TABLE クエリがあります。 公式ドキュメント を見ることができます。 また、primary key 列を編集できます。つまり、主キーを変更できます。

著者: Shihab Sikder
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

関連記事 - PostgreSQL Key