15. AUTO INCREMENT
1. AUTO INCREMENT
Field
- 자동 증분을 사용하면 새 레코드가 테이블에 삽입될 때 고유 번호가 자동으로 생성된다.
- 종종 이것은 새 레코드가 삽입될 때마다 자동으로 생성되기를 원하는 기본 키 필드이다.
2. Syntax
1) MySQL
- 다음은
Personid
열을 Persons
테이블의 자동 증가 기본 키 필드로 정의한다.
CREATE TABLE Persons (
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
- MySQL은
AUTO_INCREMENT
키워드를 사용하여 자동 증가 기능을 수행한다.
- 기본적으로
AUTO_INCREMENT
의 시작 값은 1
이며 새 레코드마다 1
씩 증가한다.
AUTO_INCREMENT
시퀀스가 다른 값으로 시작하려면 다음 SQL 문을 사용한다.
ALTER TABLE Persons AUTO_INCREMENT = 100;
- 고유한 값이 자동으로 추가되기 때문에
Persons
테이블에 새 레코드를 삽입하기 위해 Personid
열에 대한 값을 지정할 필요가 없다.
INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');
- 위의 SQL 문은
Persons
테이블에 새 레코드를 삽입한다.
Personid
열에는 고유한 값이 할당된다.
FirstName
열은 "Lars"
로 설정되고 LastName
열은 "Monsen"
으로 설정된다.
2) SQL Server
- 다음은
Personid
열을 Persons
테이블의 자동 증가 기본 키 필드로 정의한다.
CREATE TABLE Persons (
Personid int IDENTITY(1, 1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
- SQL Server는
IDENTITY
키워드를 사용하여 자동 증가 기능을 수행한다.
- 기본적으로
IDENTITY
의 시작 값은 1
이며 새 레코드마다 1
씩 증가한다.
Personid
열이 값 10
에서 시작하고 5
씩 증가하도록 지정하려면 IDENTITY(10, 5)
로 변경한다.
- 고유한 값이 자동으로 추가되기 때문에
Persons
테이블에 새 레코드를 삽입하기 위해 Personid
열에 대한 값을 지정할 필요가 없다.
INSERT INT Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');
- 위의 SQL 문은
Persons
테이블에 새 레코드를 삽입한다.
Personid
열에는 고유한 값이 할당된다.
FirstName
열은 "Lars"
로 설정되고 LastName
열은 "Monsen"
으로 설정된다.
3) MS Access
- 다음은
Personid
열을 Persons
테이블의 자동 증가 기본 키 필드로 정의한다.
CREATE TABLE Persons (
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
- MS Access는
AUTOINCREMENT
키워드를 사용하여 자동 증가 기능을 수행한다.
- 기본적으로
AUTOINCREMENT
의 시작 값은 1
이며 새 레코드마다 1
씩 증가한다.
Personid
열이 값 10
에서 시작하고 5
씩 증가하도록 지정하려면 AUTOINCREMENT(10, 5)
로 변경한다.
- 고유한 값이 자동으로 추가되기 때문에
Persons
테이블에 새 레코드를 삽입하기 위해 Personid
열에 대한 값을 지정할 필요가 없다.
INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');
- 위의 SQL 문은
Persons
테이블에 새 레코드를 삽입한다.
Personid
열에는 고유한 값이 할당된다.
FirstName
열은 "Lars"
로 설정되고 LastName
열은 "Monsen"
으로 설정된다.
4) Oracle
- Oracle에서는 코드가 조금 더 까다롭다.
- 다음과 같이
CREATE SEQUENCE
문을 통해 시퀀스 객체를 사용하여 자동 증가 필드를 만들어야 한다.
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
- 위의 코드는
1
부터 시작하여 1
씩 증가하는 seq_person
이라는 시퀀스 객체를 만든다.
- 또한 성능을 위해 최대
10
개의 값을 캐시한다.
- 캐시 옵션은 더 빠른 액세스를 위해 메모리에 저장할 시퀀스 값의 수를 지정한다.
Persons
테이블에 새 레코드를 삽입하려면 nextval
함수를 사용해야 한다.
- 이 함수는
seq_person
시퀀스에서 다음 값을 검색한다.
INSERT INTO Persons (Personid, FirstName, LastName)
VALUES (seq_person.nextval, 'Lars', 'Monsen');
- 위의 SQL 문은
Persons
테이블에 새 레코드를 삽입한다.
Personid
열에는 seq_person
시퀀스의 다음 번호가 할당된다.
FirstName
열은 "Lars"
로 설정되고 LastName
열은 "Monsen"
으로 설정된다.
References