我得到以下错误:
Caused by: org.teiid.jdbc.TeiidSQLException: TEIID31100 Parsing error: Encountered "insert into "form"."form_insertdefault_1" [*]default[*] values"
我需要填写表只有默认值和手动插入工作良好。INSERT INTO form.form_insertdefault_1 DEFAULT VALUES;
我使用postgresql数据库和JOOQ (InsertQuery.setDefaultValues())数据库映射。
TEIID不是jOOQ支持的方言,而且我不认为PostgreSQL方言会让你走得很远,因为PostgreSQL的很多东西都是特别的。我会尝试H2或HSQLDB方言,而不是。
无论如何,如果你想在不受支持的方言上运行jOOQ,你必须自己做很多模拟,就像这个一样。除了DEFAULT VALUES
(只有极少数RDBMS本地支持),您可以为每个列列出DEFAULT
(使用DSL.default_()
)表达式。无论如何,这就是jOOQ为大多数方言所做的事情。例如
insert into form.form_insertdefault_1 (col1, col2, col3)
values (default, default, default);
甚至,只列出一列:
insert into form.form_insertdefault_1 (col1)
values (default);
或者,如果也不支持DEFAULT
,则选择任意一个没有DEFAULT
表达式的可空列,并在其定义中插入NULL
:
insert into form.form_insertdefault_1 (nullable_non_defaulted_column)
values (null);