1

我正在尝试在一个事务中生成一个同时执行 2 个 postgresql 命令的代码。我的 DB 2 规则中有不同的规则顺序,我想在它们之间切换规则顺序。我正在使用 r2dbc-postgresql (v0.8.4) 和 spring-data-r2dbc (v1.1.1)。

我已经定义了 DatabaseClient 和 TransactionalOperator 并尝试使用那段代码:

public Mono<Void> insertRows() {
    return databaseClient.execute("update rules set rule_order = 2 where rule_order = 1")
            .fetch().rowsUpdated()
            .then(databaseClient.execute("update rules set rule_order = 1 where rule_order = 2")
                .fetch().rowsUpdated())
            .then()
            .as(transactionalOperator::transactional);
}

但结果是命令一个接一个地运行,所以我完成了两个规则的规则顺序 = 1。

我做错了什么,我该如何解决这个问题?

4

1 回答 1

0

不知道你在这里期待什么。

第一条语句将规则行更新为rule_order=2( update rules set rule_order = 2 where rule_order = 1)。第二个将规则更新为rule_order=1( update rules set rule_order = 1 where rule_order = 2)。

于 2020-09-08T09:49:47.560 回答