[英]hsqldb update on insert
Does anyone know of a solution to make HSQLDB update columns by calling INSERT. 有没有人知道通过调用INSERT来制作HSQLDB更新列的解决方案。 I would like my code to be able to insert, and if there's already data, to update that data. 我希望我的代码能够插入,如果已有数据,则更新该数据。 I know MySQl, I believe, has 'ON DUPLICATE KEY UPDATE'. 我知道MySQl,我相信,它已经'重复关键更新'。 I can't seem to find any recent documentation on this. 我似乎无法找到任何最近的文档。
A good sample is sometimes better the formal documentation on MERGE statement :) 有关MERGE语句的正式文档,有时候会有更好的样本:)
Sample 1 样品1
For a table ( MY_TABLE
) with tho columns ( COL_A
and COL_B
), where the first column is a primary key: 对于表( MY_TABLE
)与寿列( COL_A
和COL_B
),其中第一列是主键:
MERGE INTO MY_TABLE AS t USING (VALUES(?,?)) AS vals(a,b)
ON t.COL_A=vals.a
WHEN MATCHED THEN UPDATE SET t.COL_B=vals.b
WHEN NOT MATCHED THEN INSERT VALUES vals.a, vals.b
Sample 2 样本2
Let's add another column ( COL_C
) to our table: 让我们在表中添加另一列( COL_C
):
MERGE INTO MY_TABLE AS t USING (VALUES(?,?,?)) AS vals(a,b,c)
ON t.COL_A=vals.a
WHEN MATCHED THEN UPDATE SET t.COL_B=vals.b, t.COL_C=vals.c
WHEN NOT MATCHED THEN INSERT VALUES vals.a, vals.b, vals.c
Sample 3 样本3
Now let's change the primary key to consist of first two columns ( COL_A
and COL_B
): 现在让我们将主键更改为前两列( COL_A
和COL_B
):
MERGE INTO MY_TABLE AS t USING (VALUES(?,?,?)) AS vals(a,b,c)
ON t.COL_A=vals.a AND t.COL_B=vals.b
WHEN MATCHED THEN UPDATE SET t.COL_C=vals.c
WHEN NOT MATCHED THEN INSERT VALUES vals.a, vals.b, vals.c
Enjoy! 请享用!
HSQLDB provides the MERGE statement for this purpose. HSQLDB为此提供了MERGE语句。
http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_merge_statement http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_merge_statement
Alternatively, you can write a short stored procedure to insert, then catch any constraint violation exception and perform an update. 或者,您可以编写一个简短的存储过程来插入,然后捕获任何约束违例异常并执行更新。
http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_psm_handlers http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_psm_handlers
Update: From version 2.3.4 HSQLDB also supports the MySQL syntax for ON DUPLICATE KEY 更新:从版本2.3.4开始,HSQLDB还支持ON DUPLICATE KEY的MySQL语法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.