MySQL에서 AUTO_INCREMENT 열 건너뛰기
MySQL에서 테이블의 첫 번째 열이 AUTO_INCREMENT로 설정되어 있다면, 해당 열의 값을 생략하고 대신 NULL을 지정할 수 있습니다. 이 경우 MySQL이 자동으로 고유한 순번 값을 생성하여 채워 넣습니다.
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName varchar(100),
StudentAge int
);
Query OK, 0 rows affected (0.60 sec)레코드 삽입하기
이제 INSERT 명령문을 사용하여 레코드를 삽입합니다. 아래 예시에서는 첫 번째 열(StudentId)이 AUTO_INCREMENT이므로 이를 건너뛰고 NULL 값을 전달합니다.
mysql> insert into DemoTable values(NULL,'Robert',21); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(NULL,'Sam',22); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(NULL,'Bob',24); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(NULL,'Carol',20); Query OK, 1 row affected (0.14 sec)
결과 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+------------------+------------+ | StudentId | StudentFirstName | StudentAge | +-----------+------------------+------------+ | 1 | Robert | 21 | | 2 | Sam | 22 | | 3 | Bob | 24 | | 4 | Carol | 20 | +-----------+------------------+------------+ 4 rows in set (0.00 sec)
출력 결과에서 확인할 수 있듯이, NULL을 전달했음에도 불구하고 MySQL이 각 행에 대해 자동으로 1부터 시작하는 고유 ID 값을 생성했습니다.
참고 사항
AUTO_INCREMENT 열을 건너뛰는 또 다른 방법은 INSERT 문에 열 이름을 명시적으로 지정하는 것입니다. 예를 들어 INSERT INTO DemoTable(StudentFirstName, StudentAge) VALUES('David', 23);처럼 작성하면 ID 열을 완전히 제외할 수 있습니다. 두 방법 모두 동일한 결과를 제공하지만, 열 이름을 명시하는 방식이 코드의 가독성과 유지보수 측면에서 더 권장됩니다.