HSQLDB 合并 WHEN MATCHED AND 失败

Posted

技术标签:

【中文标题】HSQLDB 合并 WHEN MATCHED AND 失败【英文标题】:HSQLDB merge WHEN MATCHED AND fails 【发布时间】:2016-02-17 19:57:37 【问题描述】:

我有以下表格:

create table WorkPendingSummary
(
    WorkPendingID int not null,
    WorkPendingDate date not null,
    Status varchar(20) not null,
    EndDate date null
)

create table WorkPendingSummaryStage
(
    WorkPendingID int not null,
    WorkPendingDate date not null,
    Status varchar(20) not null
)

然后我有以下合并语句:

MERGE INTO WorkPendingSummary w USING  WorkPendingSummaryStage
     AS vals(WorkPendingID, WorkPendingDate, Status) 
     ON w.WorkPendingID = vals.WorkPendingID
   WHEN MATCHED AND vals.status = 'CLOSED'  
         THEN UPDATE SET w.workpendingdate = vals.workpendingdate, w.status = vals.status, w.enddate = current_time

http://hsqldb.org/doc/guide/dataaccess-chapt.html#dac_merge_statement 上的文档指出,“WHEN MATCHED”语句可以有一个额外的“AND”子句,就像我上面所说的那样,但是失败了:

unexpected token: AND required: THEN : line: 4 [SQL State=42581, DB Errorcode=-5581]

此功能是否有效,还是我只是遗漏了什么? 使用 HSQLDB 2.3.1。

谢谢!

【问题讨论】:

【参考方案1】:

该文档适用于版本 2.3.3 和即将发布的 2.3.4。这些最新版本支持 AND 子句。

【讨论】:

以上是关于HSQLDB 合并 WHEN MATCHED AND 失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CASE WHEN 语句中获取 HSQLDB 中超过 1000 个项目?

case when then

HSQLDB 合并到既不能插入也不能更新

HSQLDB在匹配时合并并失败

以编程方式合并 HSQLDB 数据库

What happened when new an object in JVM ?