ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB에서 자동순번필드의 현재순번 구하기
    IT/DB 2024. 10. 18. 09:08
    728x90
    반응형

    able에 자동순번을 PK로 사용하는 경우가 많다.

     

    ** 자동순번 필드는 데이터를 넣으면 자동으로 번호가 증가된다.

    ** SQL-SERVER 는 필드속성 자체를 자동순번으로 정의할 수 있으나

        ORACLE은 시퀀스를 이용한다.

     

    자동순번을 가진 Table이 하위의 Table을 가지고 있으면 그 하위 Table은

    상위 Table의 순번을 가져와서 데이터를 저장하는 경우가 많다.

    그때 상위 Table의 순번을 참조하는 기본적인 SQL 문은 다음과 같다.

     

    -다 음-

        1) ORACLE : select SEQCUST.currval id from dual 

                ** SEQCUST 는 시퀀스

        2) SQL-SERVER :  select @@identity id

                ** 상위 Table에 데이터 저장 후 실행해야 한다.

     

    ** VB로 구현한 Module 

     

    Public Function GetSystemSeq(ByRef Cn As ADODB.Connection, Optional sSeq As Variant) As Long
        '
        ' SQL-SERVER (iGblDB: 1)/ORACLE (iGblDB: 0) 시스템 순번 구하기

        '
        Dim sSql As String
        Dim RST As ADODB.Recordset
        '
        Dim iSeq As Long
        '
        If iGblDB = 0 Then
            sSql = "select " & CmyStrTrim(sSeq) & ".currval id from dual "
        Else
            sSql = "select @@identity id "
        End If
       
        Set RST = GetADORecordset(Cn, sSql)
        '
        iSeq = 0

        '
        If Not RST.EOF Then
            iSeq = CmyLng(RST("id"))
        End If

        '
        Call ReleaseADORecordset(RST)
        '
        GetSystemSeq = iSeq
        '
    End Function

     

    테이블의 자동순번이란?

    테이블의 자동 순번 생성 기능은 데이터베이스 관리 시스템에서 자주 사용되는 기능 중 하나입니다. 이 기능은 새로운 데이터가 삽입될 때마다 해당 데이터에 고유한 순번을 자동으로 부여하여, 데이터의 중복성을 예방하고 쉽게 추적할 수 있도록 합니다. 특히, MS SQL Server와 같은 시스템에서는 이를 구현하기 위해 IDENTITY 속성이나 SEQUENCE 객체를 사용할 수 있습니다.

    1. 자동 순번 크리이팅의 필요성

    자동 순번 생성은 데이터베이스에서 각 레코드에 유일한 식별자를 부여하는 매우 유용한 방법입니다. 예를 들어, 레코드의 고유성을 보장하는 기본 키(primary key)로서 주로 사용되며, 데이터가 많아질수록 수작업으로 중복된 값을 체크하면서 생성하는 것은 비효율적이고 오류가 발생할 가능성도 높습니다.

    2. IDENTITY 속성

    MS SQL Server에서 IDENTITY 속성을 설정하면, 해당 열에 자동으로 숫자 값이 할당됩니다. 이 경우, 사용자는 삽입할 데이터를 지정할 때 이 자동 생성되는 열에 값을 입력할 수 없습니다. 예를 들어, 다음과 같은 SQL 명령으로 테이블을 생성할 수 있습니다:

    CREATE TABLE Employees (
        EmployeeID INT IDENTITY(1,1) PRIMARY KEY,
        Name NVARCHAR(100)
    );
    

    이 SQL 명령에서는 EmployeeID 열에 대해 자동으로 1부터 시작하여 1씩 증가하는 순번이 부여됩니다.

    3. SEQUENCE 객체

    IDENTITY 외에도 SQL Server에서는 SEQUENCE 객체를 사용하여 보다 유연하게 자동 숫자 값을 관리할 수 있습니다. SEQUENCE는 여러 테이블에서 공용으로 사용할 수 있으며, 다음과 같이 생성할 수 있습니다:

    CREATE SEQUENCE EmployeeSeq
        START WITH 1
        INCREMENT BY 1;
    

    이렇게 생성된 SEQUENCE는 다음과 같이 사용할 수 있습니다:

    INSERT INTO Employees (EmployeeID, Name) 
    VALUES (NEXT VALUE FOR EmployeeSeq, 'John Doe');
    

    4. 다른 데이터베이스 시스템

    Oracle이나 PostgreSQL과 같은 다른 DBMS에서도 유사한 방법을 사용할 수 있습니다. Oracle의 경우, SEQUENCE 객체를 메인으로 사용하고, PostgreSQL에서도 비슷한 구조를 가지고 있습니다.

    자동 순번 생성은 데이터베이스 설계 및 데이터 무결성을 유지하는 데 매우 중요한 요소입니다. 데이터베이스 시스템에 따라 세부적인 구현 방법은 다를 수 있지만, 기본적인 원리는 유사합니다. 이를 통해 데이터 추가, 삭제 시의 복잡성을 줄이고, 데이터 분석이나 조회 시에 효율적으로 사용할 수 있습니다.

    728x90

    'IT > DB' 카테고리의 다른 글

    DATETIME 필드에 값 넣기  (0) 2024.10.18
    SQL-SERVER 간단 TIP  (0) 2024.10.18
    IBM DB2-400 엑세스  (1) 2024.10.18
    ORACLE 실행지침서  (3) 2024.10.16
    DB2 기초 (개요)  (2) 2024.10.16
Designed by Tistory.