다음을 통해 공유


자동 생성 키 사용

JDBC 드라이버 다운로드

SQL Server용 Microsoft JDBC Driver는 자동으로 생성된 행 식별자를 검색하기 위한 선택적 JDBC 3.0 API를 지원합니다. 이 기능의 주된 목적은 쿼리 및 서버에 대한 추가 왕복을 수행하지 않고 데이터베이스 테이블을 업데이트하는 애플리케이션에서 IDENTITY 값을 사용할 수 있도록 하는 것입니다.

SQL Server에서는 식별자에 대해 의사 열을 지원하지 않으므로 자동 생성 키 기능을 사용해야 하는 업데이트는 IDENTITY 열이 포함된 테이블에 대해 작동해야 합니다. SQL Server에서는 테이블당 하나의 IDENTITY 열만 허용됩니다. SQLServerStatement 클래스의 getGeneratedKeys 메서드에 의해 반환되는 결과 집합에는 GENERATED_KEYS라는 하나의 열만 들어 있습니다. IDENTITY 열이 없는 테이블에서 생성된 키가 요청되면 JDBC 드라이버는 null 결과 집합을 반환합니다.

그 예로 AdventureWorks2022 샘플 데이터베이스에 다음 테이블을 만듭니다.

CREATE TABLE TestTable
   (Col1 int IDENTITY,
    Col2 varchar(50),
    Col3 int);  

다음 예제에서는 AdventureWorks2022 샘플 데이터베이스에 대해 열린 연결을 함수로 전달하고, 테이블에 데이터를 추가하는 SQL 문을 생성한 다음, 해당 명령문을 실행하고 IDENTITY 열 값을 표시합니다.

public static void executeInsertWithKeys(Connection con) {
    try(Statement stmt = con.createStatement();) {
        String SQL = "INSERT INTO TestTable (Col2, Col3) VALUES ('S', 50)";
        int count = stmt.executeUpdate(SQL, Statement.RETURN_GENERATED_KEYS);
        ResultSet rs = stmt.getGeneratedKeys();

        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();
        if (rs.next()) {
            do {
                for (int i=1; i<=columnCount; i++) {
                    String key = rs.getString(i);
                    System.out.println("KEY " + i + " = " + key);
                }
            } while(rs.next());
        }
        else {
            System.out.println("NO KEYS WERE GENERATED.");
        }
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

참고 항목

JDBC 드라이버와 함께 문 사용