[MYSQL] function으로 고유 번호 만들기
2023. 11. 7. 10:25ㆍSQL
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 |