본문 바로가기
WIKI 기술 지식 베이스

DROP DOMAIN

원문 보기 위키 갱신

DROP DOMAIN은 데이터베이스에서 사용자 정의 도메인을 제거해요.

출처: 문서

본문

**Turso 확장 기능**: DROP DOMAIN은 표준 SQLite에는 없는 Turso 전용 문이에요. 이 기능은 실험적이며 사용 전에 [활성화](/sql-reference/experimental-features)해야 해요.

DROP DOMAIN 문은 데이터베이스에서 사용자 정의 도메인을 제거해요. 삭제된 뒤에는 그 도메인 이름을 새 컬럼 정의에서 쓸 수 없어요.

문법

DROP DOMAIN [IF EXISTS] domain-name;

설명

DROP DOMAIN은 지정한 도메인을 데이터베이스에서 제거해요. IF EXISTS 절을 지정하지 않았다면 도메인이 반드시 존재해야 해요.

절

절 설명
IF EXISTS 도메인이 존재하지 않을 때 생길 오류를 억제해요. 도메인을 찾지 못하면 문은 아무 것도 하지 않아요.
domain-name 제거할 도메인 이름.

제한 사항

어떤 테이블 컬럼이 도메인을 쓰고 있거나, 다른 도메인이 기본 타입으로 참조하는 동안에는 도메인을 삭제할 수 없어요. 삭제하기 전에 의존 항목을 모두 제거하세요.

CREATE DOMAIN base_d AS integer;
CREATE DOMAIN child_d AS base_d CHECK (value > 0);

-- Fails: child_d depends on base_d
DROP DOMAIN base_d;

-- Drop child first, then base
DROP DOMAIN child_d;
DROP DOMAIN base_d;

DROP DOMAIN vs DROP TYPE

DROP DOMAIN은 CREATE DOMAIN으로 만든 도메인만 제거할 수 있어요. CREATE TYPE으로 만든 타입에 DROP DOMAIN을 쓰면 오류가 발생하고, 그 반대도 마찬가지예요.

CREATE TYPE my_type BASE integer ENCODE value DECODE value;
DROP DOMAIN my_type;
-- Error: 'my_type' is a type, not a domain. Use DROP TYPE instead

CREATE DOMAIN my_domain AS integer;
DROP TYPE my_domain;
-- Error: 'my_domain' is a domain, not a type. Use DROP DOMAIN instead

예제

도메인 삭제하기

CREATE DOMAIN positive_int AS integer CHECK (value > 0);
DROP DOMAIN positive_int;

IF EXISTS로 삭제하기

-- Safe to run even if the domain does not exist
DROP DOMAIN IF EXISTS nonexistent_domain;

테이블 의존성을 제거한 뒤 삭제하기

CREATE DOMAIN score AS integer CHECK (value >= 0);
CREATE TABLE results (id INTEGER PRIMARY KEY, val score) STRICT;

-- Fails: table 'results' uses domain 'score'
-- DROP DOMAIN score;

DROP TABLE results;
DROP DOMAIN score;
-- OK

더 알아보기 (Learn more)