Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 함수로 컬럼 기본값 설정하기 – 트리거(BEFORE INSERT) 활용법

MySQL에서는 컬럼의 기본값(DEFAULT)으로 함수를 직접 지정할 수 없습니다. 하지만 트리거(Trigger)를 활용하면 INSERT 시점에 자동으로 값을 채워 넣는 것과 같은 효과를 얻을 수 있습니다.

1. 예제 테이블 생성

먼저 CREATE 명령어를 사용해 실습용 테이블을 만들어 보겠습니다.

mysql> CREATE table TbLFunctionTrigger
    -> (
    -> id int,
    -> username varchar(100)
    -> );
Query OK, 0 rows affected (0.55 sec)

2. 트리거 생성 문법

기본값 역할을 대신할 값은 BEFORE INSERT 트리거 안에서 NEW 키워드를 통해 할당합니다. 기본 문법은 다음과 같습니다.

CREATE TRIGGER anyName
BEFORE INSERT ON yourTableName
FOR EACH ROW
SET new.columnname = uuid();
  • BEFORE INSERT: 데이터가 실제로 저장되기 전에 실행됩니다.
  • FOR EACH ROW: 삽입되는 각 행마다 트리거가 적용됩니다.
  • SET new.컬럼명: 해당 컬럼에 원하는 값을 미리 지정합니다.

3. 트리거 생성 쿼리 실행

이제 id 컬럼에 UUID 값을 자동으로 채워 넣는 트리거를 만들어 보겠습니다.

mysql> CREATE TRIGGER insertBef
    -> BEFORE INSERT ON TbLFunctionTrigger
    -> FOR EACH ROW
    -> SET new.id = uuid();
Query OK, 0 rows affected (0.14 sec)

위와 같이 트리거를 생성하면, 이후 테이블에 데이터를 삽입할 때마다 id 컬럼에 별도로 값을 지정하지 않아도 uuid() 함수가 반환하는 고유 문자열이 자동으로 저장됩니다. 즉, 함수 기반의 기본값과 동일한 동작을 구현할 수 있습니다.

참고 사항

MySQL 8.0.13 버전부터는 DEFAULT (표현식) 형태로 괄호를 사용해 일부 표현식을 기본값으로 지정할 수 있게 되었습니다. 다만 그 이전 버전에서는 함수를 기본값으로 사용할 수 없으므로, 위에서 소개한 BEFORE INSERT 트리거 방식이 가장 널리 쓰이는 대안입니다.