본문 바로가기
공부/PostgreSQL

[18] PostgreSQL – CREATE DOMAIN 유형

by 혼밥맨 2023. 4. 15.
반응형

[18] PostgreSQL – CREATE DOMAIN 유형

CREATE DOMAIN: 선택적 제약 조건을 가질 수 있는 사용자 정의 데이터 유형을 생성합니다.
 
CREATE TYPE: 저장 프로시저를 사용하여 복합 유형(둘 이상의 데이터 유형이 혼합된 데이터 유형)을 생성하는 데 종종 적용됩니다.

 

CREATE DOMAIN:
PostgreSQL에서 도메인은 선택적 제약 조건이 있는 데이터 유형입니다. 고유한 이름과 잘 정의된 스키마 범위가 있어야 합니다.

 

CREATE DOMAIN 예시 01:
먼저 아래 명령을 사용하여 테이블(예: 마크시트)을 만듭니다.

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE marksheet (
    student_id SERIAL PRIMARY KEY,
    first_name VARCHAR NOT NULL,
    last_name VARCHAR NOT NULL,
    email VARCHAR NOT NULL,
    marks_obtained INT NOT NULL
    CHECK (
        first_name !'\s'
        AND last_name !'\s'
    )
);
cs

first_name 및 last_name 필드는 null이 아니며 공백을 포함하지 않아야 합니다. 교사의 편의를 위해 아래 명령을 사용하여 student_detail 도메인을 만들 수 있습니다.

1
2
CREATE DOMAIN student_detail AS 
    VARCHAR NOT NULL CHECK (value !'\s');
cs

이제 다음과 같이 first_name 및 last_name 필드의 데이터 유형으로 student_detail을 사용할 수 있습니다.

1
2
3
4
5
6
7
CREATE TABLE marksheet (
    student_id serial PRIMARY KEY,
    first_name student_detail,
    last_name student_detail,
    marks_obtained INT NOT NULL,
    email VARCHAR NOT NULL
);
cs

이제 아래 명령을 사용하여 일부 데이터를 테이블에 삽입하십시오.

1
2
3
4
5
6
7
8
INSERT INTO marksheet (first_name, last_name,marks_obtained, email)
VALUES
    (
        'Raju K',
        'Singh',
     95,
        'rajukumar@gmail.com'
    );
cs

이 단계에서 PostgreSQL은 다음 오류를 발생시킵니다.

1
ERROR:  value for domain marksheet violates check constraint "marksheet_check"
cs

따라서 동작은 예상한 대로입니다. 도메인을 수정하거나 삭제하려면 각각 ALTER DOMAIN 또는 DROP DOMAIN을 사용할 수 있습니다.
현재 데이터베이스의 모든 도메인을 가져오려면 아래 명령을 사용하십시오.

1
\dD
cs

CREATE DOMAIN 결과 01:

반응형

댓글