반응형
Oracle에서 Enum을 사용하는 방법
SQL만을 사용하여 Oracle에서 enum을 사용하는 방법(PSQL 없음)
MySQL에서는 다음을 수행할 수 있습니다.
CREATE TABLE sizes (
name ENUM('small', 'medium', 'large')
);
Oracle에서 이와 유사한 방법은 무엇입니까?
MySQL 열거에 대해 조금 읽어보면서, 가장 가까운 것은 단순한 검사 제약 조건이라고 생각합니다.
CREATE TABLE sizes (
name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
);
인덱스로 값을 참조할 수 없습니다.보다 복잡한 외부 키 관계도 가능합니다.
CREATE TABLE valid_names (
name_id NUMBER PRIMARY KEY,
name_str VARCHAR2(10)
);
INSERT INTO valid_sizes VALUES( 1, 'small' );
INSERT INTO valid_sizes VALUES( 2, 'medium' );
INSERT INTO valid_sizes VALUES( 3, 'large' );
CREATE TABLE sizes (
name_id NUMBER REFERENCES valid_names( name_id )
);
CREATE VIEW vw_sizes
AS
SELECT a.name_id name, <<other columns from the sizes table>>
FROM valid_sizes a,
sizes b
WHERE a.name_id = b.name_id
뷰에서 조작하는 한,는 기능을 꽤 잘 복제할 수 있을 것 같습니다.
PL/SQL 솔루션을 허용하면 보유할 수 있는 값 집합을 제한하고 ID를 가져오거나 값을 가져오는 메서드를 갖는 논리를 포함하는 커스텀오브젝트 유형을 만들 수 있습니다.
열에 구속조건을 사용하면 어떨까요?다음과 같이 동작합니다.
ALTER TABLE x ADD 구속조건 size_constraint check ('small', 'medium', 'large'의 x_size)
이 링크에서는 C 언어 enum에서 영감을 얻은 Oracle 대체 솔루션/회피책을 찾을 수 있습니다.http://www.petefinnigan.com/weblog/archives/00001246.htm
간단히 말해서, Pete는 일부 정수 상수를 정의하고 SUBTYPE을 사용하여 이를 구성할 것을 제안합니다.
RED constant number(1):=1;
GREEN constant number(1):=2;
BLUE constant number(1):=3;
YELLOW constant number(1):=4;
subtype COLORS is binary_integer range 1..4;
그런 다음 COLORS를 입력하여 변수를 선언하고 매개 변수를 전달하며 함수 등에서 값을 반환할 수 있습니다.
언급URL : https://stackoverflow.com/questions/203469/how-to-use-enums-in-oracle
반응형
'programing' 카테고리의 다른 글
Oracle에서 저장 프로시저를 포함한 개체를 검색하는 SQL (0) | 2023.03.09 |
---|---|
Wordpress의 스택 오버플로 형식 (0) | 2023.03.09 |
스프링 부트에서 applicationContext.xml을 자동으로 Import합니까? (0) | 2023.03.09 |
angularjs UI 라우터의 상태 간에 $scope 데이터를 공유하려면 어떻게 해야 합니까? (0) | 2023.03.09 |
HTML 데이터 속성에 JSON을 추가하는 것이 나쁜가요? (0) | 2023.03.09 |