자동으로 PK 를 생성하는 Trigger 또는 다른 방법을 ? 0 4 4,530

by Gun2011 [Oracle 기초] oracle trigger [2023.08.09 14:57:18]


우리는 아래와 같이 테이블을 생성 했습니다. 

CREATE TABLE STYLES 
( 
    STYLE_CODE       CHAR2(8)   NOT NULL,
    COLOR       CHAR2(2),
    FEATURE     CHAR2(2),
    SIZE        CHAR2(2),
    YEAR        CHAR2(2)
    CONSTRAINT STYLE_CODE_PK PRIMARY KEY (STYLE_CODE)
);

만약 데이터가 아래처럼 입력 된다면 

insert into STYLES 
  (COLOR, FEATURE, SIZE, YEAR) VALUES ('11','AB','A0','23')

4개의 입력되는 값 '11','AB','A0','23' 으로 

PK 값을 자동으로 "11ABA023" 로 생성할 수 있는 Trigger 만들거나 다른 방법이 있는지? 

 

by 마농 [2023.08.09 15:17:38]

위 테이블 그대로 한다면? 트리거로 가능할 듯 합니다.
테이블 변경이 가능하다면? 4개 항목만 관리하는 방안도 고려할 수 있습니다. (복합키)
이 경우, 코드는 (쿼리, 뷰, 가상컬럼) 등을 활용하여 추출 할 수 있습니다.


by Gun2011 [2023.08.09 22:33:29]

감사합니다. 


by pajama [2023.08.09 15:43:21]

12버전 이상이시면 generate column을 사용해보시는건 어떨지요? 아 위에서 이미 말씀해주셨군요..;

 

CREATE TABLE STYLES 
( 
    STYLE_CODE   GENERATED ALWAYS AS ( COLOR || FEATURE || SIZE_T || YEAR ) NOT NULL,
    COLOR       CHAR(2),
    FEATURE     CHAR(2),
    SIZE_T        CHAR(2),
    YEAR        CHAR(2),
    CONSTRAINT STYLE_CODE_PK PRIMARY KEY (STYLE_CODE)
);

 


by Gun2011 [2023.08.09 23:01:38]

직접 테이블을 생성하는 Query 문을 만들어 주셔서 문제를 해결 했습니다. 감사합니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입