Esiste un RDMS generale incrociato, in cui è possibile generare automaticamente una chiave su un inserto JDBC? Per esempio, se ho una tabella con una chiave primaria, id, e un valore int:Chiave di generazione automatica sull'inserto JDBC in SQL Server
create table test (
id int not null,
myNum int null
)
e fare un inserto
PreparedStatement statement = connection.prepareStatement("insert into test(myNum) values(?)", Statement.RETURN_GENERATED_KEYS);
statement.setInt(1, 555);
statement.executeUpdate();
statement.close();
ottengo un java.sql.SQLException: Impossibile inserire il valore NULL nella colonna 'id'.
Ho la sensazione che sia interamente dipendente da RDMS. Stiamo utilizzando SQL Server 2005 e ho impostato
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]
in tabella senza fortuna.
Per DB2 è possibile scegliere tra una colonna di identità e una sequenza. Potrei immaginare ciò che conta anche per gli altri rdbms. – rudolfson
Grazie per il chiarimento. Tuttavia questo non conta per altri rdbms. Almeno non per Oracle. –