【问题标题】:Using default values in TEIID throws TeiidSQLException在 TEIID 中使用默认值会引发 TeiidSQLException
【发布时间】:2021-05-28 23:28:18
【问题描述】:

我收到以下错误:

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()) 进行数据库映射。

【问题讨论】:

    标签: postgresql default jooq teiid


    【解决方案1】:

    TEIID 不是 jOOQ 中受支持的方言,而且我认为 PostgreSQL 方言不会让你走得太远,因为很多 PostgreSQL 的东西是多么具体。我会尝试使用 H2 或 HSQLDB 方言。

    在任何情况下,如果您想在不受支持的方言上运行 jOOQ,您必须自己进行大量仿真,例如这个仿真。代替只有极少数 RDBMS 原生支持的 DEFAULT VALUES,您可以为每列列出 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);
    

    【讨论】:

    • 您好 Lukas,感谢您的彻底和及时的答复。没想到反应这么快! DEFAULT 也不支持,所以我插入了 NULL。
    猜你喜欢
    • 2020-05-25
    • 2017-11-17
    • 2014-12-16
    • 1970-01-01
    • 2011-01-13
    • 2011-11-19
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多