H2 SQL 语句中是否有语法错误?

Is there any wrong syntax in H2 SQL statement?

正在尝试使用内存中的 H2 DB 执行准备好的 SQL 语句。收到语法错误:

org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "INSERT INTO task7schema.courses (course_name) VALUES (?) returning[*] course_id;"; SQL statement:
INSERT INTO task7schema.courses (course_name) VALUES (?) returning course_id; [42000-200]

无法弄清楚语法有什么问题。任何帮助表示赞赏。

H2 仅支持符合标准的语法:

SELECT course_id FROM FINAL TABLE
    (INSERT INTO task7schema.courses (course_name) VALUES (?));

您问题的语法是 PostgreSQL 特定的。因为 PostgreSQL 不支持标准数据更改增量表,所以您需要为 H2 使用不同的 SQL 和 PostgreSQL.

JDBC 有自己或多或少可移植的方式来请求生成的密钥。您可以从语句或准备语句中显式请求它们(使用额外的 Statement.RETURN_GENERATED_KEYS 参数或通过指定列的名称或序号索引)并使用 getGeneratedKeys().

读取它们