기본키의 값을 ABC00001와 같이 앞자리는 문자열 뒷자리는 숫자로 하고, 숫자는 자동 증가로 할 때 사용하는 방법입니다.
table1_seq 테이블 : 임시 테이블로 기본키만 있으며, 이 테이블의 기본키 값이 정수부분에 해당함
table1 테이블 : 실제 테이블로 ABC00001값이 들어갈 테이블
tg_table1_insert : 트리거로 table1에 insert 작업을 하기 전에 동작하는 트리거
LAST_INSERT_ID() : 가장 마지막에 insert 작업이 실행된 테이블의 기본키 값을 반환하는 함수)
LPAD(값, 자리수, 'A') : 값이 지정된 자리수보다 작은 경우 남은 자리를 A로 채워주는 함수
테이블 생성 샘플 코드
1 2 3 4 5 6 7 8 | CREATE TABLE table1_seq ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ); CREATE TABLE table1 ( id VARCHAR(8) NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30) ); | cs |
트리거 샘플 코드
1 2 3 4 5 6 7 8 9 | DELIMITER $$ CREATE TRIGGER tg_table1_insert BEFORE INSERT ON table1 FOR EACH ROW BEGIN INSERT INTO table1_seq VALUES (NULL); SET NEW.id = CONCAT('ABC', LPAD(LAST_INSERT_ID(), 5, '0')); END$$ DELIMITER ; | cs |
table1에 insert 작업 샘플 코드
INSERT INTO Table1 (name) VALUES ('Jhon'), ('Mark');출처 : stackoverflow(바로가기)