JDBC for SQL Server - Herong's Tutorial Examples - v3.14, by Herong Yang
"INSERT INTO" Statements with INDENTITY Columns
This section describes what will happen if you try to insert rows with values for INDENTITY columns.
An INDENTITY column is a special column in a table that defined to have it value automatically added with a sequence number generator. An INDENTITY column is normally used for the primary key column in a table.
For example, we can add a new column, CustomID, into my Customer table and make it as an INDENTITY column.
herong> sqlcmd -S localhost\SQLEXPRESS -E 1> use AdventureWorks2014 2> go 1> alter table Herong.Customer add CustomerID int IDENTITY 2> go
If you try to add values to an INDENTITY column in INSERT statements, you will get an error as shown in the sample program below:
/* InsertIdentity.java * Copyright (c) HerongYang.com. All Rights Reserved. */ import java.sql.*; public class InsertIdentity { public static void main(String [] args) { Connection con = null; try { con = DriverManager.getConnection( "jdbc:sqlserver://localhost\\SQLEXPRESS;" + "user=herong;password=T0pSecret;" + "database=AdventureWorks2019"); Statement sta = con.createStatement(); // insert a single row int count = sta.executeUpdate( "INSERT INTO Herong.Customer" + " (CustomerID, FirstName, LastName, ModifiedDate)" + " VALUES (1001, 'Herong', 'Yang', '2007-04-01')"); System.out.println("Number of rows inserted: "+count); sta.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } }
Here is the error message from this program:
herong> java -cp .;mssql-jdbc-9.4.1.jre16.jar InsertIdentity com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert explicit value for identity column in table 'Customer' when IDENTITY_INSERT is set to OFF.
Table of Contents
JDBC (Java Database Connectivity) Introduction
Microsoft SQL Server Express Edition
Microsoft JDBC Driver for SQL Server
Microsoft JDBC Driver - Query Statements and Result Sets
Microsoft JDBC Driver - DatabaseMetaData Object
Microsoft JDBC Driver - DDL Statements
►Microsoft JDBC Driver - DML Statements
►"INSERT INTO" Statements with INDENTITY Columns
SQL Server - PreparedStatement
SQL Server CLOB (Character Large Object) - TEXT
SQL Server BLOB (Binary Large Object) - BLOB
Using Connection Pool with JDBC
JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver
JDBC-ODBC Bridge Driver - Flat Text Files
JDBC-ODBC Bridge Driver - MS Access