식별번호 앞에 문자 덧붙이면서 자동증가 가능하도록

기여·2024년 7월 25일
0

소소한 개발팁

목록 보기
60/103

흔히 보이는 상품번호, 주문번호, 거래번호 등 앞에 문자 하나씩이 있다.
테이블이 많아질수록 해당 문자가 있으면 어떤 테이블의 식별번호인지
구분하는 데 도움이 될 것 같아 chat gpt에게 생성하는 방법 물어봤지.

여태까지 교육 받은 바로는 해당 번호를 java/js를 통해
{지정 문자} + Date + 난수 식으로 생성하고 전달해 왔다.

그런데 연산할 것도 아니고 db에서 바로 형식 지정하고
백에는 문자열 그대로 받고 처리 가능하다면
후작업을 줄일 수 있지 않을까 생각이 오늘 들었다.

예를 들면 장바구니 번호 cartid에 적용해 보겠다.

1, 테이블 생성

CREATE TABLE cart (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cartid VARCHAR(10) UNIQUE,
    name VARCHAR(100)
);

2, trigger 생성

DELIMITER //

CREATE TRIGGER trg_before_insert_cart
BEFORE INSERT ON cart
FOR EACH ROW
BEGIN
    DECLARE last_id INT;

    SELECT AUTO_INCREMENT
    INTO last_id
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'cart';

    SET NEW.cartid = CONCAT('C', LPAD(last_id, 5, '0'));
END//

DELIMITER ;

3, 테이블에 테스트용 레코드 추가

INSERT INTO cart (name) VALUES ('cartTest');

다른 컬럼도 추가/변경한 후의 결과:

문득 전회사의 해외협력사에서 늘 보내왔던 거래번호도 역시 KR1234 / T9876 식이었던 기억이 난다.

profile
기기 좋아하는 여자

0개의 댓글