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