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)
- CREATE DOMAIN - 도메인 정의하기
- DROP TYPE - 커스텀 타입 제거하기