有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在成批准备的语句中运行多个查询

我有一个场景,如果DB2中不存在记录,我想插入它。如果它已经存在,则将is_active列更新为现有行的0,并插入is_active为1的新行

我无法使用“合并到”,因为我无法在“匹配时”部分中运行2个查询

我怎样才能成批完成这项任务

如果我一个接一个地运行查询,我就可以运行它们了。但是因为有流媒体,每秒大约有500毫克,我想批量做这件事

如果我们使用这个语句,我们就可以做到

声明。addBatch(sql1) 陈述addBatch(sql2)

在完成上述操作之后,假设我们执行了500次批处理 陈述excuteBatch()

但我们正在准备的声明中寻找类似的东西。当我们试图用和语句相同的方法来做时,它失败了


共 (1) 个答案

  1. # 1 楼答案

    您可以将两个或多个数据更改语句组合成一个语句,但它是SELECT语句,不能在addBatch方法中使用
    Retrieval of result sets from an SQL data change statement
    但是您可以仅在addBatch方法中使用after update触发器和insert语句

    CREATE TABLE TEST
    (
      ID INT NOT NULL GENERATED ALWAYS AS IDENTITY
    , KEY INT NOT NULL
    , IS_ACTIVE INT NOT NULL
    ) IN USERSPACE1;
    
    CREATE TRIGGER TEST_AIR 
    AFTER INSERT ON TEST
    REFERENCING NEW AS N
    FOR EACH ROW
    UPDATE TEST T SET IS_ACTIVE=0 WHERE T.KEY=N.KEY AND T.ID<>N.ID AND T.IS_ACTIVE<>0;
    
    INSERT INTO TEST (KEY, IS_ACTIVE) VALUES (1, 1);
    INSERT INTO TEST (KEY, IS_ACTIVE) VALUES (1, 1);
    SELECT * FROM TEST;
    
    |ID         |KEY        |IS_ACTIVE  |
    |     -|     -|     -|
    |1          |1          |0          |
    |2          |1          |1          |