Ausführen mehrerer Abfragen als eine dblink-Transaktion

Ich arbeite in einer Java-Anwendung, in der ich die beiden Abfragen (als Strings in Java) gleichzeitig ausführen und die Transaktion zurücksetzen muss, wenn Fehler aufgetreten sind.

SELECT dblink_exec('hostaddr=xxx.xx.xxx.xxx port=5432 dbname=bdname user=myuser password=mypass connect_timeout=2',
'INSERT INTO table3(field4) 
VALUES (5)') AS result;

SELECT dblink_exec('hostaddr=xxx.xx.xxx.xxx port=5432 dbname=bdname user=myuser password=mypass connect_timeout=2',
'UPDATE table1 SET field2 = field2 + 3.0 WHERE field1 = 16436') AS result;

AKTUALISIERE

Ich habe einen String mit den beiden durch @ getrennten Abfragen erstell; wie in den Kommentaren vorschlagen

AKTUALISIERE

Ich habe JDBC-Atomic-Transaktionen als Code in Java ausprobiert. Ich erzwinge, dass die zweite SQL fehlschlägt, aber selbst wenn ich .setAutoCommit (false) spezifiziere; das dblink betraf die andere datenbank mit der ersten abfrage. Ich habe den gleichen Code ohne Dblink-Transaktionen ausprobiert und das Rollback funktioniert gut. dblink ist das problem.

Java Updat

public static boolean ejecutarTransaccionDblink(String sql) {
    boolean estado = false;
    try {
        Statement sentencia = conexion.createStatement();
        conexion.setAutoCommit(false);
        if (sql.length() != 0) {
            if (sentencia.execute(sql)) {
                conexion.commit();
                estado = true;
            }
        }
    } catch (SQLException ex) {
        System.out.println(ex.toString());
        try {
            estado = false;
            conexion.rollback();
        } catch (SQLException ex1) {
        }
    } finally {
        try {
            conexion.setAutoCommit(true);
            return estado;
        } catch (SQLException ex) {
            return estado;
        }
    }
}

Danke für Ihre Hilfe

Antworten auf die Frage(4)

Ihre Antwort auf die Frage