흔히 보이는 상품번호, 주문번호, 거래번호 등 앞에 문자 하나씩이 있다.
테이블이 많아질수록 해당 문자가 있으면 어떤 테이블의 식별번호인지
구분하는 데 도움이 될 것 같아 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 식이었던 기억이 난다.