¿Existe una forma general, cruzada de RDMS, de que pueda generar una clave automáticamente en una inserción JDBC? Por ejemplo, si tengo una tabla con una clave principal, identificación, y un valor int:Generación automática de clave en la inserción de JDBC en SQL Server
create table test (
id int not null,
myNum int null
)
y hago una inserción
PreparedStatement statement = connection.prepareStatement("insert into test(myNum) values(?)", Statement.RETURN_GENERATED_KEYS);
statement.setInt(1, 555);
statement.executeUpdate();
statement.close();
consigo un java.sql.SQLException: No se puede insertar el valor NULL en la columna 'id'.
Tengo la sensación de que depende por completo de RDMS. Estamos utilizando el uso de SQL Server 2005 y he configurado
CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 1) ON [PRIMARY]
en la tabla sin suerte.
Para DB2 puede elegir entre una columna de identidad y una secuencia. Pude imaginar que esto cuenta para otros rdbms, también. – rudolfson
Gracias por la aclaración. Sin embargo, esto no cuenta para otros rdbms. Al menos no para Oracle. –