This problem has been solved and I would particularly like to thank @ *Katzyn* and @*Evgenij* for their help and their reactivity... Le lundi 4 juillet 2022 à 12:20:17 UTC+2, prrvchr a écrit :
> Hi Evgenij, > > I just saw that Katzyn has already committed the correction > <https://github.com/h2database/h2database/pull/3568>. > Maybe you know where I can find the corrected H2 jar archive? > > And maybe you can help me to finish the integration of auto increment in > Base? > Apparently H2 does not support a command like: > > CREATE TABLE "PUBLIC"."PUBLIC"."Table1" ("ID" INTEGER NOT NULL GENERATED > BY DEFAULT AS IDENTITY, "Name" VARCHAR(100), PRIMARY KEY ("ID")) > > If so, I can create the table then the index in two separate commands: > CREATE TABLE "PUBLIC"."PUBLIC"."Table1" ("ID" INTEGER NOT NULL GENERATED > BY DEFAULT AS IDENTITY, "Name" VARCHAR(100)) > > ALTER TABLE "PUBLIC"."PUBLIC"."Table1" ADD INDEX ..... > > I don't know the second command... > Thanks. > > Le lundi 4 juillet 2022 à 04:06:33 UTC+2, Evgenij Ryazanov a écrit : > >> Hello. >> >> Identity columns don't have any dedicated data types in the SQL Standard >> and it the most of database systems. When you declare an identity column >> you must specify both data type (BIGINT or INTEGER, for example) and >> identity clause (GENERATED BY DEFAULT AS IDENTITY etc.) >> >> Few database systems have special data types with implicit identity >> characteristics due to historic reasons. PostgreSQL has serial data types ( >> smallserial = serial2, serial = serial4, bigserial = serial8). Normally >> identity columns should be used in modern versions of PostgreSQL instead of >> these legacy types, but at least JDBC drivers have something to report >> here. PgJDBC reports only smallserial, serial, and bigserial data types >> in getTypeInfo() with TRUE in AUTO_INCREMENT column. >> >> H2 doesn't have special types (compatibility modes have some) and returns >> FALSE for all data types. >> >> HSQLDB doesn't have special types, but it returns TRUE for TYNYINT, >> SMALLINT, INTGER, BIGINT, DECIMAL and NUMERIC. These data types may be >> used for identity columns, but an additional clause must be specified in >> their definitions. >> >> Derby doesn't have special types, it returns TRUE for SMALLINT, INTEGER, >> and BIGINT, so situation is the same. It also returns NULL for LOB data >> types, it looks like a bug. >> >> It means some drivers (PgJDBC, H2) assume that TRUE in this column >> indicates a special data type with implicit identity characteristics, some >> other drivers (HSQLDB, Derby) assume that TRUE indicates a data type >> that may be used for an identity column with additional identity generation >> clauses. >> >> Why this deviation exists? In the SQL Standard, INFORMATION_SCHEMA is >> described in a separate book with more than 300 pages and we usually can >> say where it was implemented correctly and where it isn't correct. But JDBC >> metadata is only described in its own Javadoc and these descriptions are >> too brief and obscure. In many cases it isn't possible to determine what >> they exactly mean, so developers of JDBC drivers need to guess or they can >> try to copy behavior of some other driver. >> >> I think we can change our implementation to return TRUE for TINYINT, >> SMALLINT, INTEGER, BIGINT, and NUMERIC data types. >> > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/h2-database/01ef2f8f-44ff-4183-b8e6-1f2656cb31f7n%40googlegroups.com.
