插入时hsqldb更新

Mat*_*att 5 jdbc insert hsqldb

有没有人知道通过调用INSERT来制作HSQLDB更新列的解决方案.我希望我的代码能够插入,如果已有数据,则更新该数据.我知道MySQl,我相信,它已经'重复关键更新'.我似乎无法找到任何最近的文档.

Ant*_*ton 10

关于MERGE语句的正式文档,有时候一个好的样本会更好:)

样品1

对于MY_TABLE带有列(COL_ACOL_B)的table(),其中第一列是主键:

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
Run Code Online (Sandbox Code Playgroud)

样本2

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
Run Code Online (Sandbox Code Playgroud)

样本3

现在让我们将主键更改为前两列(COL_ACOL_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
Run Code Online (Sandbox Code Playgroud)

请享用!