그냥 사는 이야기

오라클 Table에선 BOOLEAN 형이 없다 본문

Development/기타

오라클 Table에선 BOOLEAN 형이 없다

없다캐라 2013. 2. 18. 17:59
반응형

오라클 Boolean type

HSQL에서 아래처럼 테이블 생성하는 쿼리를 오라클 DB에서 하려고 할 때였다.

CREATE TABLE acl_sid (
	id bigint generated by default as identity(start with 100) not null primary key,
	principal boolean not null,
	sid varchar_ignorecase(100) not null,
	constraint uk_acl_sid unique(sid, principal)
);

Oracle에서도 같은 테이블을 만들기 위해서 시도하는데 BOOLEAN 형에서 에러가 발생하였다. 예상도 못했었는데 실제로 검색을 조금 해보니 지원하지 않는다고 하였다. 그래서 몇몇 다른 대안을 사용하여야 했다.

Oracle Table의 칼럼 데이터 타입중에 BOOLEAN은 없다. 하지만 PL/SQL에서는 있다. 예)VAR_BOOLEAN BOOLEAN := TRUE;

Auto Incremental

그리고 증감자 처리도 오라클에선 조금 달랐는데 Create Sequence를 별도로 작업해 주어야 했다.

CREATE TABLE acl_sid(
	id INT NOT NULL PRIMARY KEY,
	principal CHAR(5) CHECK(principal IN('FALSE','TRUE')),
	sid VARCHAR2(100) NOT NULL,
	CONSTRAINT uk_acl_sid UNIQUE(sid, principal)
);
Create Sequence id Increment by 1 start with 1;

그래서 최종은 위처럼 하였다. boolean형보다 당장에는 "TRUE", "FALSE" 이 문자열이 필요해서 CHAR(5)로 그냥 잡고 테이블을 구성하였다.

덕분에 추가적으로 DB간 차이에 대해 잘 알려준 이곳을 참조하였다.

Comments