식별자 열 만들기 및 수정

식별자 열을 사용하여 테이블에서 자동으로 증가되는 ID를 만들 수 있습니다. 각 테이블에 대해 식별자 열과 GUID 열을 하나씩만 만들 수 있습니다.

IDENTITY 속성

식별자 열은 IDENTITY 속성을 사용하여 구현할 수 있습니다. 개발자는 Identity Seed 속성을 사용하여 테이블에 삽입되는 첫 번째 행의 ID를 지정하고 Identity Increment 속성을 사용하여 초기값에 추가되어 연속적인 ID 번호를 결정할 증가값을 모두 지정할 수 있습니다. 식별자 열이 있는 테이블에 값을 삽입할 때 데이터베이스 엔진은 이 초기값에 증가값을 추가하여 다음 번 ID 값을 자동으로 생성합니다. 기존 테이블에 ID 열을 추가하면 ID 번호가 테이블의 기존 행에 추가되며 원래 행을 삽입한 순서대로 초기값과 증가값이 적용됩니다. 새로 추가한 모든 행에 대한 ID 열도 생성됩니다. 기존 테이블 열을 수정하여 IDENTITY 속성을 추가할 수는 없습니다.

IDENTITY 속성을 사용하여 식별자 열을 정의하려면 다음 사항을 고려해야 합니다.

  • 테이블은 IDENTITY 속성을 사용하여 정의된 열을 하나만 가질 수 있으며 이 열을 decimal, int, numeric, smallint, bigint 또는 tinyint 데이터 형식으로 정의해야 합니다.

  • 초기값과 증가값을 사용자가 지정할 수 있습니다. 기본값은 모두 1입니다.

  • 식별자 열에 Null 값을 허용하면 안 되고 DEFAULT 정의나 개체를 포함할 수 없습니다.

  • IDENTITY 속성을 설정한 후 $IDENTITY 키워드를 사용하여 선택 목록에서 열을 참조할 수 있습니다. 이름으로 열을 참조할 수도 있습니다.

  • OBJECTPROPERTY 함수를 사용하면 테이블에 IDENTITY 열이 있는지 여부를 알 수 있고 COLUMNPROPERTY 함수를 사용하면 IDENTITY 열의 이름을 알 수 있습니다.

  • SET IDENTITY_INSERT를 사용하여 값을 명시적으로 삽입할 수 있도록 하여 열의 IDENTITY 속성을 해제할 수 있습니다.

    [!참고]

    자주 삭제되는 테이블에 식별자 열이 있으면 ID 값 사이에 간격이 생길 수 있습니다. 삭제된 ID 값은 다시 사용되지 않습니다. 이러한 간격이 생기지 않도록 하려면 IDENTITY 속성을 사용하지 마십시오. 대신 행이 삽입될 때 식별자 열의 기존 값에 따라 새 ID 값을 결정하는 트리거를 만들 수 있습니다.

GUID(Globally Unique Identifiers)

IDENTITY 속성이 한 테이블 안에 있는 행에 자동으로 번호를 매기지만 각각 고유한 식별자 열을 가진 별개의 테이블도 같은 값을 생성할 수 있습니다. IDENTITY 속성은 해당 속성이 사용되는 테이블에만 고유하기 때문입니다. 응용 프로그램이 데이터베이스 또는 네트워크로 연결된 전세계의 컴퓨터에 있는 모든 데이터베이스에서 고유한 식별자 열을 생성해야 하는 경우 uniqueidentifier 데이터 형식과 NEWID 또는 NEWSEQUENTIALID() 함수를 사용합니다. 또한 ROWGUIDCOL 속성을 적용하여 새 열이 행 GUID 열임을 나타낼 수 있습니다. IDENTITY 속성으로 정의된 열과 달리 uniqueidentifier 형식의 열에 대해서는 데이터베이스 엔진이 자동으로 값을 생성하지 않습니다. 전역 고유 값을 삽입하려면 해당 열에서 NEWID 또는 NEWSEQUENTIALID 함수를 사용하여 전역 고유 값을 생성하는 DEFAULT 정의를 만듭니다. 자세한 내용은 uniqueidentifier 데이터 사용을 참조하십시오.

$ROWGUID 키워드를 사용하여 SELECT 목록에서 ROWGUIDCOL 속성이 있는 열을 참조할 수 있습니다. 이것은 $IDENTITY 키워드를 사용하여 IDENTITY 열을 참조하는 방식과 비슷합니다. 테이블은 하나의 ROWGUIDCOL 열만 포함할 수 있고 이 열을 uniqueidentifier 데이터 형식으로 정의해야 합니다. OBJECTPROPERTY(Transact-SQL) 함수를 사용하면 테이블에 ROWGUIDCOL 열이 있는지 여부를 알 수 있고 COLUMNPROPERTY(Transact-SQL) 함수를 사용하면 ROWGUIDCOL 열의 이름을 알 수 있습니다.

다음 예에서는 기본 키로 uniqueidentifier 열이 있는 테이블을 만듭니다. 이 예에서는 DEFAULT 제약 조건의 NEWSEQUENTIALID() 함수를 사용하여 새 행의 값을 제공합니다. uniqueidentifier 열에 ROWGUIDCOL 속성이 적용되어 $ROWGUID 키워드를 사용하여 참조할 수 있습니다.

CREATE TABLE dbo.Globally_Unique_Data
    (guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
    Employee_Name varchar(60)
    CONSTRAINT Guid_PK PRIMARY KEY (guid) );

테이블을 만들 때 새 식별자 열을 만들려면

CREATE TABLE(Transact-SQL)

기존 테이블에서 새 식별자 열을 만들려면

ALTER TABLE(Transact-SQL)

식별자 열을 삭제하려면

ALTER TABLE(Transact-SQL)

방법: 테이블에서 열 삭제(Visual Database Tools)

ID 열에 대한 정보를 가져오려면

sys.identity_columns(Transact-SQL)

IDENT_INCR(Transact-SQL)

IDENT_SEED(Transact-SQL)

지정한 테이블의 현재 ID 값을 확인하고 수정하려면

DBCC CHECKIDENT(Transact-SQL)

새 초기값을 설정하려면

DBCC CHECKIDENT(Transact-SQL)