在 Jooq 中创建 VIEW 语句
Posted
技术标签:
【中文标题】在 Jooq 中创建 VIEW 语句【英文标题】:Creating VIEW statement in Jooq 【发布时间】:2013-06-28 14:05:38 【问题描述】:我正在尝试使用 Jooq 创建视图语句,我们该怎么做?
或者我们还有其他选择吗?
Jooq 版本:3.0.1
【问题讨论】:
你能再具体一点吗?你想表达一个 DDLCREATE VIEW x AS SELECT ...
语句,还是想在 jOOQ 中创建一个“视图”,即一个模拟子选择但行为像表的对象?
@Lukas,我想创建视图,我想如果我只是想访问创建的视图,Jooq Generator 工具可以做到吗?
是的,生成器处理视图就像它们是表格一样......我会创建一个答案
【参考方案1】:
jOOQ 不支持创建视图。如jOOQ home page 所述:
何时不使用 jOOQ: ... 当您需要编写 DDL 语句时。 jOOQ 仅支持 DML 语句。 ...CREATE VIEW
是 DDL,而不是 DML。
【讨论】:
这是真的,尽管最近在 jOOQ User Group 上对CREATE VIEW
语句使用 jOOQ 提出了挑战。如果您在 jOOQ 生成的 SELECT
语句前面加上 CREATE OR REPLACE VIEW
子句,原则上没有什么可以阻止您使用 jOOQ 创建视图【参考方案2】:
在 jOOQ 3.1 中没有明确支持 CREATE VIEW
DDL 语句,尽管 some users on the user group 已经在挑战 jOOQ 以非正式地支持它。由于这可能是一个常见的用例,因此将其放在路线图上可能是有意义的:#2582
在添加任何官方支持之前,您仍然可以使用纯 SQL:
DSLContext ctx = DSL.using(...);
ctx.execute("CREATE OR REPLACE VIEW my_view AS 0;",
select(a, b).from(my_table).where(...)
);
上面的示例使用DSLContext.query(...)
构造以jOOQ QueryPart
对象作为参数的普通SQL 查询。
【讨论】:
以上是关于在 Jooq 中创建 VIEW 语句的主要内容,如果未能解决你的问题,请参考以下文章
JOOQ 和 TimescaleDB - 如何在 JOOQ 中实现基本的 time_bucket 语句