首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将update和insert与hypersql结合使用

将update和insert与hypersql结合使用
EN

Stack Overflow用户
提问于 2013-01-09 07:05:54
回答 2查看 1.3K关注 0票数 1

我根据这篇很棒的帖子实现了upsert:Insert, on duplicate update in PostgreSQL?,它在psql上工作得很好。但是,我不能向用于测试的hsqldb发出相同的查询。我的sql如下所示:

代码语言:javascript
复制
UPDATE account set name = ?, email = ?, type = ?, regts = ?, dao_updated = ? WHERE id = ?; 
INSERT INTO account (id, name, email, type, regts, dao_created,dao_updated) SELECT ?,?,?,?,?,?,? WHERE NOT EXISTS (SELECT 1 FROM account WHERE id = ? );

我得到了错误消息:

代码语言:javascript
复制
Caused by: java.sql.SQLSyntaxErrorException: unexpected token: INSERT
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)

这是hsqldb的限制,还是我做错了什么?

提前谢谢你,里昂

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-09 07:32:04

HSQLDB支持以下MERGE语句:

http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_merge_statement

merge语句通常比UPSERT和非标准替代语句更强大。

或者,您可以使用CREATE PROCEDURE并定义一个类似于链接答案中给出的PostgreSQL示例的过程。

http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_psm_conditional

您可以使用GET诊断语句来确定更新是否成功。

http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_diagnostics_state

票数 0
EN

Stack Overflow用户

发布于 2013-01-09 07:25:18

显然,您不能在单个executeUpdate()调用中使用多个语句。请调用两次,第一次做UPDATE,下一次做INSERT

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14225606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档