반응형
[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:
반응형
'공부 > PostgreSQL' 카테고리의 다른 글
[19] PostgreSQL – ORDER BY 문 (0) | 2023.04.15 |
---|---|
[19] PostgreSQL – SELECT 문 (0) | 2023.04.15 |
[17] PostgreSQL – JSON 데이터 유형 (0) | 2023.04.15 |
[16] PostgreSQL – TIME 데이터 유형 (0) | 2023.04.15 |
[15] PostgreSQL – Date 데이터 유형 (1) | 2023.04.15 |
댓글