기본키의 값을 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(8NOT 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(바로가기)

+ Recent posts