존재하지 않는 경우에만 PostgreSQL 테이블에 기본 키 추가

Shihab Sikder 2023년6월20일
  1. PostgreSQL의 기존 테이블에 기본 키 할당
  2. 존재하지 않는 경우 PostgreSQL 테이블에 기본 키 추가
존재하지 않는 경우에만 PostgreSQL 테이블에 기본 키 추가

경우에 따라 다른 테이블과의 관계를 생성하는 데 필요한 기본 키를 선언하지 않고 테이블을 생성할 수 있습니다. 이제 alter 쿼리로 테이블을 업데이트하고 기본 키를 업데이트할 수 있습니다.

PostgreSQL의 기존 테이블에 기본 키 할당

기본 키는 관계를 만들 때 필요합니다. 테이블에는 여러 관계가 있을 수 있지만 기본 키가 없으면 관계를 만들 수 없습니다.

다음과 같은 테이블을 만들었다고 가정해 보겠습니다.

CREATE TABLE Product(
  PRODUCT_ID INT,
  PRODUCT_NAME VARCHAR,
  PRODUCT_PRICE NUMERIC,
  PRODUCT_DESCRIPTION VARCHAR
);

이제 테이블 구성 및 데이터 유형을 보려면 다음과 같습니다.

postgres=# \d Product
                          Table "public.product"
       Column        |       Type        | Collation | Nullable | Default
---------------------+-------------------+-----------+----------+---------
 product_id          | integer           |           |          |
 product_name        | character varying |           |          |
 product_price       | numeric           |           |          |
 product_description | character varying |           |          |

이제 기본 키를 추가해 보겠습니다. 여기에서는 product_id를 기본 키로 지정합니다.

방법은 다음과 같습니다.

postgres=# ALTER TABLE Product ADD PRIMARY KEY (PRODUCT_ID);
ALTER TABLE
postgres=# \d Product\
                          Table "public.product"
       Column        |       Type        | Collation | Nullable | Default
---------------------+-------------------+-----------+----------+---------
 product_id          | integer           |           | not null |
 product_name        | character varying |           |          |
 product_price       | numeric           |           |          |
 product_description | character varying |           |          |
Indexes:
    "product_pkey" PRIMARY KEY, btree (product_id)

postgres=#

여기에서 product_id가 기본 키로 지정되고 null일 수 없음을 알 수 있습니다.

존재하지 않는 경우 PostgreSQL 테이블에 기본 키 추가

위의 방법은 기본 키가 있어도 기본 키를 추가합니다. 이제 존재하지 않는 경우 기본 키를 확인하고 추가합니다.

여기서 주의할 점이 있습니다. Postgres는 기본 키를 추가할 때마다 product_pkey와 같은 제약 조건을 자동으로 할당하므로 이 제약 조건이 존재하는지 여부를 확인해야 합니다.

단계는 다음과 같습니다.

  1. 기본 키가 있으면 삭제합니다.
  2. 기본 키를 추가합니다.
ALTER TABLE product DROP CONSTRAINT IF EXISTS product_pkey;
ALTER TABLE product ADD CONSTRAINT product_pkey PRIMARY KEY (PRODUCT_ID);

다음은 psql 셸의 출력입니다.

postgres=# ALTER TABLE product DROP CONSTRAINT IF EXISTS product_pkey;
NOTICE:  constraint "product_pkey" of relation "product" does not exist, skipping
ALTER TABLE
postgres=# ALTER TABLE product ADD CONSTRAINT product_pkey PRIMARY KEY (PRODUCT_ID);
ALTER TABLE
postgres=# \d Product
                          Table "public.product"
       Column        |       Type        | Collation | Nullable | Default
---------------------+-------------------+-----------+----------+---------
 product_id          | integer           |           | not null |
 product_name        | character varying |           |          |
 product_price       | numeric           |           |          |
 product_description | character varying |           |          |
Indexes:
    "product_pkey" PRIMARY KEY, btree (product_id)

기본 키와 Postgres에서 테이블을 변경하는 방법에 대해 자세히 알아보려면 다음 블로그를 방문하십시오.

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

관련 문장 - PostgreSQL Table