在H2中的重复键更新功能

时间:2015-04-22 21:29:46

标签: sql h2

我使用H2(嵌入式)开发了java桌面应用程序。我只是掌握了有关数据库的基本知识,所以我只需安装H2并创建模式名称RecordAutomation,然后将表添加到该模式。现在我正在尝试使用ON DUPLICATE KEY UPDATE功能来处理特定的表,这个表没有给出sql语法错误,我检查了我的查询,我发现它是正确的,如下所示

INSERT INTO RECORDAUTOMATION.MREPORT 
(PRODUCTID ,DESCRIPTION ,QUANTITY ,SUBTOTAL ,PROFIT ) 
VALUES (22,olper,5,100,260) 
ON DUPLICATE KEY UPDATE SET QUANTITY = QUANTITY+5;

我搜索并尝试解决此问题,因为此功能不适用于非默认表。我不知道默认和非默认。请帮助我

1 个答案:

答案 0 :(得分:15)

您需要使用MySQL模式。为此,请将;mode=MySQL附加到数据库URL。 (此功能尚未正确记录)。

该表需要具有主键或至少具有唯一索引。完整的例子:

drop table MREPORT;

set mode MySQL;

create table MREPORT(PRODUCTID int primary key, 
DESCRIPTION varchar, QUANTITY int,  SUBTOTAL int, PROFIT int);

INSERT INTO MREPORT 
(PRODUCTID ,DESCRIPTION ,QUANTITY ,SUBTOTAL ,PROFIT ) 
VALUES (22,'olper',5,100,260) 
ON DUPLICATE KEY UPDATE QUANTITY = QUANTITY+5;