auto_increment 속성은 테이블 내 컬럼에 고유값을 생성할 때 사용한다. 이 고유값은 0부터 시작하며 시작값은 Default 값이 0으로 지정되어 있다. 또한, auto_increment로 생성되는 값은 중간 레코드가 삭제되었다고 삭제된 auto_increment 값이 새로운 레코드에 사용되지 않는다. 즉, 고유값은 auto_increment로 생성된 값의 마지막을 기준으로 계속하여 증가한다. 하지만 마지막 auto_increment 값을 삭제했을 경우에는 새로운 레코트의 auto_increment 값은 삭제된 마지막 값이 된다. auto_increment 속성을 사용할 때 주의할 점은 다음과 같다.
● auto_increment 속성을 주는 컬럼은 항상 기본키(primary key)로 지정되어야 한다.
auto_increment 속성을 부여하는 컬럼에는 primary key 속성도 함께 지정해 주어야 한다. 만약, primary key 속성을 지정하지 않은 상태에서 auto_increment 속성을 부여하면 문법적 오류를 발생시킨다. 이 때 not null 속성은 주지 않아도 문법적 오류를 발생시키지 않지만 primary key 속성은 오류를 발생시킨다.
※ primary key 속성을 부여하지 않았을 때 발생하는 오류 코드
오류 발생 쿼리문
CREATE TABLE table (
sequence int auto_increment
);
오류가 발생하지 않는 쿼리문
CREATE TABLE table (
sequence int auto_increment primary key
);
이와 같은 문법적 오류를 발생시키는 원인은 auto_increment 속성은 유니크한 키 값을 자동으로 생성해주는 명령어로서 테이블내에서 유니크한 키 값을 제외한 다른 고유키(primary key)를 선언할 수 없게 문법적으로 막아놓은 것이다.
하나의 테이블에는 고유키(primary key)를 하나만 가지는게 데이터의 무결성을 지키는 방법이기 때문에 auto_increment 선언을 할 때는 primary key 선언을 같이 하지 않으면 문법적 오류로 처리해 버린다.
만약 한 테이블에 고유키(primary key)를 두 개 이상 가지고 싶다면, primary key() 함수를 사용하여 선언하면 된다.
CREATE TABLE table ( a int, b int, primary key(a,b) );
위와 같은 방법으로 한 테이블안에 고유키를 여러 개 가질 수 있다.
또한, auto_increment 속성을 사용하면서 시작하는 값을 지정하고 싶다면 Default 값을 지정할 수도 있다. 이 때 테이블을 생성하면서 시작값을 지정할 수는 없고, 테이블을 정의한 후 테이블의 속성을 변경하는 방법으로 시작값을 지정할 수 있다. 지정하는 방법은 다음과 같다.
ALTER TABLE '테이블명' AUTO_INCREMENT='Default Value';
ALTER TABLE testTable AUTO_INCREMENT = 100;
위 예제처럼 값을 지정하면 시작값이 100부터 시작된다.
'DBMS > MySQL 5.1' 카테고리의 다른 글
My-SQL 데이터베이스에 DATE (날짜) 처리 방법 (0) | 2010.01.06 |
---|---|
테이블명 변경, 필드 변경 (0) | 2009.11.04 |
Timestamp 와 DateTime 형 사용시 주의 사항 (0) | 2009.10.09 |
데이터 백업과 복구 (0) | 2009.09.16 |
데이터베이스 생성, 계정입력, 테이블 생성 (0) | 2009.08.25 |