[MYSQL] function으로 고유 번호 만들기

2023. 11. 7. 10:25SQL

1. function 설정

 

CREATE DEFINER= `DB 주소` FUNCTION `내가 지정할 함수명` () RETURNS varchar(6) CHARSET utf8mb4
    READS SQL DATA
    DETERMINISTIC

 

(변수설정구간)
BEGIN
   DECLARE mValue CHAR(6);
   DECLARE resultValue CHAR(6);


  -- 현재 MAX 값 가져오기
  SELECT MAX(고유ID를 지정할 Column) INTO mValue FROM 테이블명

  -- 초기값 설정
  IF mValue IS NULL THEN
    SET mValue = 'C00000';     <---- 내가지정할 번호
  END IF;

  -- 숫자 부분을 +1

  SET mValue = CONCAT('C', LPAD(CAST(SUBSTRING(mValue, 2) AS SIGNED) + 1, 5, '0'));

 

 


  RETURN mValue;
 END

 

 


SUBSTRING(mValue, 2): mValue 열에서 두 번째 문자부터 시작하는 부분 문자열을 가져옵니다.

CAST(SUBSTRING(mValue, 2) AS SIGNED): 위에서 가져온 부분 문자열을 정수(SIGNED)로 변환합니다.

CAST(SUBSTRING(mValue, 2) AS SIGNED) + 1: 위에서 변환한 정수에 1을 더합니다.

LPAD(CAST(SUBSTRING(mValue, 2) AS SIGNED) + 1, 5, '0'): 위에서 계산한 값을 5자리로 만들되 왼쪽에 '0'을 채워서 만듭니다.'C': 문자열 'C'를 추가합니다.

CONCAT('C', LPAD(CAST(SUBSTRING(mValue, 2) AS SIGNED) + 1, 5, '0')): 위에서 생성한 문자열과 문자열 'C'를 합칩니다.

SET mValue = CONCAT('C', LPAD(CAST(SUBSTRING(mValue, 2) AS SIGNED) + 1, 5, '0')): 위에서 생성한 문자열을 mValue 열에 설정합니다.

 

 

이러한 함수 생성 후

TRIGGER를 설정하면 적용 완료

728x90

'SQL' 카테고리의 다른 글

[MYSQL] Safe mode 해제  (2) 2023.11.29
[MYSQL] TRIGGER 만들기  (0) 2023.11.07
✔️Mysql ERROR 1205, Lock 현상 (버튼으로 데이터 삭제할 경우)  (0) 2023.11.01
NoSQL MongoDB-Compass에 data import 시키기  (0) 2023.05.16
NoSQL 기초  (0) 2023.05.09